资源描述:
第 5期 总第 1 8 6期 2 0 1 4年 1 O月 机 械 工 程 与自 动 化 MECHANI CAL ENGI NEERI NG 8 L AUT0MAT1 0N NO .5 0c t . 文章编 号 1 6 7 2 6 4 1 3 2 0 1 4 0 5 0 1 3 3 0 3 嵌入式软 P L C控制系统 中 RP C的设计与实现豢 陈雄 姿 ,龙 辛 ,黄 波。 ,朱方镇。 ,戴 建利 1 . 湘潭大学 智 能计算 与信 息处理教育部 重点实验室,湖南 湘潭4 1 1 1 0 5 ;2 .湘 电风 能有 限公 司,湖南 湘潭4 1 1 1 0 1 ;3 .长 沙优利泰克信 息技 术有限公司 ,湖南 长沙4 1 0 0 0 0 摘要 基于项 目跨平 台通 信的需求 ,针对现有通信 方法的局限性并结合嵌入 式系统的特 点和远程过 程调 用原 理 ,提 出了一种基 于远程过程调用 的 多平 台通 信设 计架 构 ,并在 Vx Wo r k s 操 作 系统、Wi n d o ws 操 作 系统、 L i n u x系统上分别 实现 了服务端和客 户端 ,设 计 了登录模块 ,保证 了整个通信 过程 的安全 性。实 际工程应用 验证 了本方 案的通用性、实 时性和 安全 性。 关键词 嵌入 式软 P L C;RP C协议;远程通信 ;多平 台通信 中图分类号 T P 2 7 3 文献标识码 A 0 引 言 软 P L C基于计算机 网络技术 , 具有极强 的网络通 信能力和通用性能 , 它可 以支持多种远程终端, 这就需 要一种通用的协议来实现分布式不同远程终端问的网 络通信 。RP C r e mo t e p r o c e d u r e c a l l , 远程过程调用 是一种不需要了解底层网络技术 , 只需通过网络从远 程计算机程序上请求服务的建立在 TC P或者 UD P之 上的应用层协议 , 用户只需按照协议规定对数据包进 行打包 、 解包即可实现通信。本文针对软 P L C与不同 平台进行通信 的需求 , 采用 S UN公 司 的 ONc / RP C 协议 来 实 现 P L C 控 制 系 统 中 R P C 库 的 开 发 , 通 过 R P C库 提供 远 程 数 据 访 问接 口, 集 成 身 份 验 证 , 搭 配 远程管理终端实现跨平台通信。 1 软 P L C控制 系统 概述 采用 3 S公 司的 C o De S y s软件为开发环境 , 以结 合了 P o we r P C处理器的 Vx Wo r k s实时操作系统为运 行环境 , 构成嵌人式软 P L C系统 中 RP C的应用平 台。 现有 的远程 管理终 端是 HMI监控 系统 和上 位机软 件 , 使用 O NC / R P C协议 与 Vx wo r k s操 作系统进行 通讯 。整个嵌入式软 P L C系统的结构如图 1所示 。 2 R P C的 实现 2 . 1 标准的 ON C / R P C服务 R P C是一种典型的 C / S模式 , 服务端分布在 P L C 各模块上 , 客户端 分布在远程管理终端。客户端 请求 服务 , 服务端响应请求。首先 , 由客户端进程对包含本 地过程调用的相关信息进 行打包 , 通过网络调用程序 发送给服务端, 请求一次过程调用服务, 然后客户端进 程阻塞 , 进入响应 等待过程 。而服务端 进程处 于阻塞 状态 , 直到接收到一个远程过程调用请求。服务端对 数据 包 进行 解析 , 获 得 服务 请 求 参 数 的 同 时进 行 相 关 处理 , 将得到的运算结果进行打包返 回给客户端, 然后 服务端程序进入一个休眠状态 , 等待下个服务请求 的 到来 。客户端进程根据得到返 回结果继续执行程序。 图 2对一次远程过程调用进行了详细的说 明。 圜 PLc开 发 环 境 网络 P L C 运 行环境 V x W o r k s 操作系统 远程管理终端 图 1 嵌入式软 P L C系统 的结构 2 . 2 P L C控制器中 R P C服务 系统结构 P L C控制器中的 R P C服务系统结构见图 3 , 分为 底层 P L C服务模块和上位机客户模块。底层 P L C服 务模 块 根 据 标 准 ONc / R P C 编 写 , 已 实 现 L o g i n 、 M1 0、 HMI 子 R P C模 块 , 根据 以后 的需 求 , 可 继 续 添 加其 他功 能的 R P C模块。R P C模块通 过 Vx wo r k s 集成 的 0NC / R P C组件 , 可提供相应 的 RP C调 用功 能 , 同时 Vx Wo r k s 还具有高效任务管理 、 快速 中断响 应等优点 , 保证了 RP C调用过程中的实时性 。上位机 十一五国家科技支撑计划项 目 2 0 0 6 B AAO 1 A0 6 收稿 日期 2 0 1 4 0 2 2 5 ;修 回 日期 2 0 1 4 0 4 1 5 作 者简介 陈雄姿 1 9 8 6 一 ,男 ,湖南娄底人 。在读硕士研究生 ,研究方 向新能源发电系统 。 ~ 一 ~ 一 ~ 一 一 学兔兔 w w w .x u e t u t u .c o m 1 3 4 机 械 工 程 与 自 动 化 2 0 1 4年第 5期 与 P L C间通过 TC P / I P或者 UD P协议进行通信。 客户端进程 服务器进程 8 3 ⋯⋯一重 鲤 燕⋯⋯ 图 2 O NC / R P C标准流程 I U s e r&S e s s i o n I I M I O L I B Il I E C“e a r I J m a n a g e r I l D r i v e r I I C o m p o n e n t I ; i i L O G I N 广一 千 千 t l ● I I Y x W o r k s 0 N C / R P C 组 件 I I ● T C P / I P ,I U D F 上位机 l ● 上位机O N C / R P C t 件 I I t ll L Ol 1 I N l 1l M II l0 l 厂 j H M I 厂 ] 图 3 RP C服务 系统结构 2 . 3安 全登 录模块 登录模块的设计应满足 R P C的服务器端和客户 端安全共享资源 的需求 , 为 R P C的应用 提供安全保 障。它包含初始化读取用户名密码配置信息和身份验 证主调函数等 , 为了降低登录模块数据存储和验证 的 时间 消耗 , 保 证 整 个 系 统 的实 时 性 , 采 用 了 u t h a s h这 种最高效 、 最简单的哈希实现结构, 其处理流程如 图 4 所 示 。 用户身份信息 HAS H 表结构定义如下 t y p e d e f s t r u c t t a g AUTH .US ER.ACCOUNT { c h a r u s e r [ 3 2 “] 甩芦韬 *f c h a r p wd [ 3 2 ] ;/*口令 */ T h a s h h a n d l e h h { *h a s h h a n d l e { } 会话信息 HAS H表结构定义如下 t y p e d e f s t r u c t t a g AUT H USER .S ESS I ON u n s i g n e d i n t s e s s i o n _i d; / *会话 I D*/ u n s i g n e d l o n g a c t i v e _t i c k / *最近活动时间 */ c h a r u s e r [ 3 2 ] ; *豫户煞 *f UT h a s h h a n d l e h h; | h a s h h a n d l e | 安全登录模块服务器端主程序如下 i n t * r p c _a u t h l o g i n_l SVC RPC_ AU THACCOUT *a r g p, s t r uc t s v c _r e q r q s t p { ⋯ /*调用身份验证函数 , 获取会话 I D*/ r e s u l t a u t } Lu s e r _l o g i n a r g p-- u s e r , a r gp ~ p wd ; 安全登录模块客户端主程序如下 r p c a c c o u n tn e w RPC AUTH AC C OUNT ;/ / 构 建 RP C身份 验 证请求包 r p c a c c o u n t . u s e r一” mp c 8 2 8 x ” ; / / 填充用户名 r p c a c c o u n t . p wd一 ” 8 2 8 x ”; / / 填充密码 ha n d l e a u t } L - c l i e n t . r p c _ a u t } L - l o g in 一 1 r p c a c c o u t ; / / 请求 身份验 证 , 并 获取登 录句柄 初 始化 流 程 d b user i n i t 获取用户配置信息函 取 a u t h . d b 配 置文 件 曲 一h as ha d d 用户名和密码保存在H A S d b _u ser ve ri fy 身份验证 函数 用户身份 信息H A S H 表 会 话信息 HA S H 表 图 4登录模块 初始化以及调用流程 2 . 4 MI o 模 块 MI O模块是供远程 RP C调用 的封装层 , 它基于 底层 M1 0 _ L I B库而设计 , M1 0一 L I B库主要为 P L C控 制系统提供统一的硬件模块操作接 口, 包括数据 的传 输 、 状态检测 、 配置信息的读取更换等 , 用于支持上位 机对硬件模块 的控制 、 管理 、 监控 , 实现 1 0通道值读 写 、 重启 P L C模块 、 读取和设置 P L C时间、 获取通道 状态等功能。该模块集成登录模块身份验证功能, 实 现了简单 的身份有效性 校验。最 上层是标准 O NC / RP C调用接口, 在身份验证获许通过后 , 根据 RP C客 户端传人的参数去寻找并执行 mi o函数 , 并将执行结 果通过 R P C返回给客户端 。其调用实现流程见图 5 。 R P C 调用接 口 r pe _mi o f u nc a l l一1 一S V C R P C 调用 入 口函数 1 t 2 本地身份验证函数 3 l t 9 mi o f u ncc a l l m i o 库调用入口函数 4 0 t 8 查找要调用的m i o 封装函数 5 } 一R P c - M 1 0 一 F U N c - 封装 函数 6 f 获取对应的M I O 函数 7 { M I L I B 底 层m i o l i b 函数 图 5 MI O RP C 厍 调 用 买 现 流 程 其中, mi o封装 函数有 mi o g e t v a l u e封装 函数 、 m i o r e b o o t封 装 函 数 、mi or e b o o t封 装 函 数 、 m i o g e t e r r o r 封装 函数 等 。 MI O模块服务器端程序完成 的工作主要是在调 用 mi o封装库之前先做一次有效性判断, 即是否登录, 再根据传入的参数来调用不同的 m i o封装函数。 MI O模块客户端程序完成 的工 作主要是在安全 学兔兔 w w w .x u e t u t u .c o m 学兔兔 w w w .x u e t u t u .c o m
展开阅读全文