资源描述:
P C上位机与 S 7 3 0 0系列 P L C进行通讯的研究 马 健 韩晓华 黄绪平 赵洪贤 董 欣 杜石岩 山东省科学院激光研究所, 山东 济宁 2 7 2 0 1 7 摘要 用 V C开发西门子 s 7 3 0 0系列 P L C的监控软件 。 首先需要解决 P C上位机与 P L C之间的通讯问 题。在没有公开通讯协议的情况下 , 借助西门子提供 的 P r o d a v e软件包中的库函数 。 用 V C进行编 程。 实现 P C通过 MP I方式与 P L C通讯。通过运行实例发现 , 利用上述方法进行通讯 , 能够对 P L C 数据存储器的不同部分进行快速准确地读写。 关 键词 VC S 7 3 0 0 MP I 通 讯 中图分类 号 T P 3 1 文 献标识码 A Re s e a r c h o n c o mmu n i c a t i o n b e t we e n PC a n d S 7 3 0 0 s e r i e s P L C MA J i a n 。HAN Xi a o h u a,HUANG Xu p i n g ,Z HA O Ho n g x i a n,D ONG Xi n,DU S h i y a n L a s e r I n s t i t u t e o f S h a n d o n g A c a d e m y o f S c i e n c e s , J i n i n g 2 7 2 0 1 7 ,C H N Ab s t r a c t Th e mo n i t o r i n g s o f t wa r e f o r S i e me n s S 73 0 0 s e r i e s P LC c a n be d e v e l o p e d b y u s i ng VC. F i r s t o f a l l ,t h e c o mmun i c a t i o n p r o b l e m o f PC a n d PL C n e e ds t o b e r e s o l v e d.I n t e r ms o f n o o p e n c o mmu n i c a t i o n p r o t o c o l ,l i b r a r y f u n c t i o n s o f t he S i e me n s P r o d a v e pa c k a g e c a n b e u s e d b y p r o g r a mmi n g wi t h VC. An d t h e n, t h e MP I c o mmun i c a t i o n s o f PC a nd PL C c a n b e a c h i e v e d.Th r o u g h t h e e x a mp l e,u s i n g a b o v e me t h o d, t h e d i f f e r e n t pa r t s o f t h e P LC d a t a me mo r y c a n b e a b l e t o r e a d a n d wr i t e f a s t a n d a c c u r a t e l y. Ke ywo r d sVC; S 73 0 0; MPI ;Co mmu n i c a t i o n P L C具有极高的可靠性 , 一般应用于工业现场 , 但 它的人机接 口功能较差。如果将 P L C与 P C通过通讯 连接起来 , 用 P C作为上位机 , 通过对 P L C的数据存储 器 中各区域的读取与写入 , 实现系统的监控 、 人机接 口 通讯等功能 , 就 能够使二者优势互补 , 组成 一个功 能 强 、 可靠性高 、 成本低的控制系统 J 。 在没有公开通讯协议 的情况 下 , 西 门子 S 7 3 0 0 系列的 P L C监控界面的开发 , 一方面可通过西门子公 司的 WI N C C来实现 ; 另一方面 , 还可 以利用西门子提 供的 P r o d a v e软件包 , 通过 V C编程调用 动态链 接库 D L L 中 的库 函数 , 实 现 P C上 位 机 与 P L C 以 MP I Mu t i P o i n t I n t e r f a c e 方 式 进 行 的 通 讯。相 对 于 WI N C C而言 , 虽然 V C开发监控 界面 的速度稍慢 , 但 V C编程具有高度的灵活性。 1 S 7 3 0 0系列 P L C数据存储 器的访 问 西门子 S 7 3 0 0系列 P L C的数据存储器主要包括 以下几个部分 j 输入信号缓存 区 输入 映象存 储器 I , 输出信号缓存区 输出映象存储器 Q , 变量存储器 V , 内部辅助继 电器 内部 标志位存储器 M , 特殊 标志位存储器 S M , 除了特殊标志位 以外 , 其它部分 L U I 1 0 都能以位 、 字节和双字的格式 自由地读取与写入 。 P L C数据存储器 中的数据类 型主要有字节 B 、 字 w 、 双字 D 。数据存储器 中的数据地址 的一般 格式为 A a 1 . a 2 。其 中 A是 区域代码 I 、 Q、 V、 M、 S M , a l 是字节的首地址 , a 2是位地址 0~ 7 。例如, l 4 . 2表示该数据在 I 存储 区4号地址的第 2位 。 用 P c作为上位机通过对 P L C数据存储器 的各部 分进行数据读写是一种通讯形 式。当利用高级语 言 V C设计监控软件时, 必须采用与 P L C相对 应的通讯 协议 , M P I 便是西门子公司开发的用于 P L C之间通讯 协议。当通信速率要求不高、 通信数据量不大时, 可以 采用 MP I 协议进行通讯 。但鉴于此协议的不公开性 , 可借助西门子公司推出的 P r o d a v e MP I 软件包 , 用来解 决 P C与西 门子 P L C之 间通 讯 的 问题 。P r o d a v e M P I 软件包在 . D L L和 . L I B文件中集成 了数据交换 的 函数 , 供用户开发监控软件时调用。下面介绍 V C调 用 P r o d a v e中 D L L的方法和一些常用的库函数。 2 VC调 用 DL L的方法及通讯 中常用库 函数 2 . 1 V C调用 P r o d a v e中 D L L文件的步骤 V C编程 中加载 P r o d a v e中的动态链 接库有两种 l 69 数控专栏 C N C S e m _n a r 方式 隐式链接和显式加 载l 3 J 。其 中, 隐式链接 方式 实现起来 比较简单 , 首先在编写客户端代码时做好链 接工作 , 然后就能够在程序 中随时调用 D L L导出的函 数 , 具体步骤如下 1 在 P r o d a v e的安装 目录下分 别找到 P r o d a v e 6 . d l l 、 P r o d a v e 6 . h和 P r o d a v e 6 . 1 i b ; 2 把 P r o d a v e 6 . d l l 拷到 目标工程的 D e b u g目录下 ; 3 把 P r o d a v e 6 .h和 P r o d a v e 6 . 1 i b拷到 目标工程 目录下 ; 4 在 目标工 程程序 中, 选择 P r o j e c t / S e t t i n g s菜单 , 点 选 l i n k选项卡, 在 O b j e c t / l i b r a r y mo d u l e s 选项编辑框中输 入 P r o d a v e 6 . 1 i b ; 5 在 目标工程 H e a d F i l e s 加入 P r o d a v e 6 . h文件; 6 最后在 目标工程源程序 . c p p 需 要调用 D L L中的库函数的程序 中加入 i n c l u d e” P r o d a v e 6 . h” 语句 , 声明包含 P r o d a v e 6的头文件。 2 . 2一些通讯中常用的库函数 J 通过调用 P r o d a v e中的库函数与 P L C进行通讯 , 通常首先要与 P L C建立 、 激活通讯 连接 ; 然后利 用字 节读写函数对 P L C不 同的数据存储器部分进行读 写 访问; 进行完通讯 , 最后还要利用 函数断开与 P L C的 通讯连接。在上述过程中, 如果有错误发生, 相应函数 就会返回 1个错误代码。 2 . 2 . 1 用于与 P L C通讯连接的基本 函数 用于与 P L C通讯 连接 的基本 函数主要包 括 与 P L C建立通讯连接的函数 l o a d t o o l , 激活连接的 函 数 n e w S S , 断开连接的函数 u n l o a d t o o l 。 在调用其它函数前应该首先调用 l o a d t o o l , 它 的作用是初始化适配器 , 检查是否已经加载驱动, 初始 化连接 的地 址 和激活选 定 的界 面。函数 原型 为 i n t l o a d t o o l c h a r c h C o n N o , c h a r p s t r A c c e s s P o i n t ,c h a r p C o n T a b l e 。参数 c h C o n N o 表示激活连接的数量 ; p s t r A c c e s s P o i n t 表示用户驱 动设备 名称 , 对 于接人 的 MP I 驱动器的设备而言 , 其值为” s 7 o n l i n e ” ; p C o n T a b l e 表示连接的地址列表, 是 1 个二维数组, 用它来指定一 系列连接参数 , 依次为 M P I 地址、 西门子保留的参数 , 用于进一步 的扩展与开发, 默认 为 0 、 C P U槽号 、 C P U 机架号 。假如在 1 个 MP I 网络中存在多个 C P U时 , 可 以指定一个以上的连接列 , 最后以一列为 0的 M P I 地 址来标志参数列的结束 。 n ew S S 函数用 于激活进行数据交换的通讯连 接 , 或者用此 函数重新建立已关闭的连接 , 函数原型为 i nt n e w S S c h a r c h C o n N o 。参数 c h C o n N o用来 指定 激活相应的连接 , 例 如 n e w S S 2 表示激 活第 2个 P L C连接。当进行完通讯后 , 需要利用 u n l o a d t o o l 断开与 P L C的通讯连接 , 它 的函数原型为 i n t u n l o a d t o o l v o i d , 是个不带参数的函数。 2 . 2 . 2 读取 P L C软件版本信息和 P L C状态的函数 在函数库中, 函数 a g i n f o 用于读取 P L C软件的 版本信息、 P G接 口以及 P L C的订货号, 其原型为 i n t a g i n f o v o i d lB u f f e r ,B u ff e r 是用于传递上述信息 的参数。而函数 a g z u s t a n d 则用于读取 P L C的状态 运行或停 止 , 函数 原型 为 i m a g z u s t a n d v o i d B u f f e r , B u f f e r 用于传递 P L C的状态 。 2 . 2 . 3 用于以字节为单位对数据存储器进行读取 的 函数 e _f i e l dr e a d 、 a _ fi e l d r e a d 、 m fi e l d r e a d 分 别用于对 P L C的输入信号缓存区 I 、 输 出信号缓存 区 Q 、 内部标志位存储器 M 中的数据 以字节为单 位进行读取 。e_ fi e l d r e a d 的函数原型为 i n t e _ fi e l d r e a d i n t n S t a r t N o , i n t p n A n z a h l , v o i d B u f f e r , 参数 n S t a r t N o表示读取字节的起始号,p n A n z a h l 表示 读取数据字节 的个数 ,B u f f e r用于传递 读取 的数据。 其余两个函数的原型及参数含义与 e fi e l d r e a d 类 似。a_ fi e l d w r i t e 、 re _ fi e l d w r i t e 分别用于对 P L C 的输出信号缓存区、 内部标志位存储器中的数据以字 节为单位进行写入。a _ fi e l d w r i t e 的函数原型为 i n t a f i e l d w r i t e i n t n S t a r t N o ,i n t p n A n z a h l ,v o i d } B u f f e r , 参 数 n S t a r t N o表 示 写 入 字 节 的 起 始 号 , p n A n z a h l 表示写入数据字节 的个数 ,B u ff e r 用于传递 写入的数据。m fi e l d w r i t e 函数的原型构成与参数 含义与 a fi e l d w r i t e 类似。 2 . 2 . 4 用于 M变量位状态访问的函数 在库函数中, 除了用于字节读取的函数外 , 还有对 标志位 M 进行操作的函数。针对标志位进行的操作 有置位 、 复位和检测 , 与之相对应 的函数分 别是 mb s e t b i t 、 mb r e s e t b i t 和 m b b i t t e s t 。其中 , 置位函 数的原型为 i n t m b s e t b i t i n t n Mb N o , i n t n B i t N o , 参 数 n Mb N o表示标 志位字节 的地址 ,n B i t N o表示标 志 位字节的第几位。另外两个函数的原型构成及参数含 义与 m b s e t b i t 类似。此外还可以 自己编写函数 , 实 现对其他数据存储器字节 中的位状态进行访 问。例 如 , 欲读取 I 4 . 2的状态 , 首先利用 e _ fi e l d r e a d 以字 节为单位读取输入信号缓存区 4号地址中的数据 , 然 后根据字节数据取出第 2位 的值 。 2 . 3 函数调用时错误信息代码的判读 上述各函数返回值 的含义相 同, 即当函数调用 出 现错误时, 返回值为相应的错误代码 ; 反之, 返 回值为 0 。根据函数返 回的错误代码 , 对照 P r o d a v e提供 的错 误代码表 ] , 就能 够查 出错 误 的原 因。在编写 程序 时 , 可以把错误代码表中的信息翻译成中文, 存入利用 蒌 耋 警 簪 ;⋯ ll 十 0 A c c e s s 建立的表格中, 在遇到错误时进行查表操作 , 然 后通过对话框 的形式将错误显示 出来 , 提示用户进行 相应的处理 , 从 而使用户能够更好地完成操作。 3 实例 利用 P r o d a v e提供的库 函数 , 使用 V C 6 . 0编写 以 M P I 方式 与 s 7 3 0 0系 列 P L C进行通 讯 的程 序 , 。 . 其 流 程 如 图 1 所 示 。 在 运 l毒 行 此 程 序 前 , 应 该 进 行 必 要 蠢 垣 噩 硬 己 o 3 1 置睦 . 硬 件 连 接 与 配 置 l 翌 剑 r u 孚 首先将P C A d a p t e r 的 霹 呕 亟 圈 两端分别插在计算机 的 串 行 口 和P L c c P u 模 块 的 f{ 一 d 卜 口 噩 薹 手 圈 M P I 通讯口 上。然后按以 f 墓 萤 圈 P G / 控制 面板 中 的“ 设 置 . P c 接 口 ” 图 标 , 进 入 设 置 对 耕 卜 [ 隧 问点 A ” 下拉列表中选择 S T E P 7 的 标 准 配 置 一 “ S 7 O NL I NE f S T E P 7 ⋯ , , 图1程序流程图 选项 ,“ 为使用的接 口分配参数 P ” 下拉列表中选择 “ P C A d a p t e r MP I ” 。点击“ 属性 ” 按钮 , 在弹 出的属 性 对 话 框 中 的 “M P I ”选 项 卡 中 设 置 传 输 率 为 1 8 7 . 5 k b / s , 在“ 本地连接” 选项卡中的“ 连接到” 选择 框中设置实际使用 的 P C串 口编号 , 同时设置传输率 为 1 9 2 0 0, 其它参数采用默认设 置即可 。最后依次点 击“ 属性” 和“ 设置 P G / P C接 口” 对话框 中的“ 确定” 按 钮完成配置。 3 . 2运行程 序 与 P L C 进行 通讯 运行编写的通讯程序 , 进入 系统 的“ 初始化及 获 取信息” 界面 图 2 , 设置“ 初始化连接 ” 中的参数 , 如 果 1 个 MP I网中有 2个 C P U, 可以点“ 添加 ” 按钮继续 输入第 2个 C P U的 MP I 地址 、 槽号和机架号 , 参数输 入完后 , 点击“ 建立连接” 。若想进一步获取 P L C软件 版本的信息 、 P L C订货号 及 P L C状态 , 可点击 “ 获取” 按钮。 待参数设置好以后 , 点击 “ 激活连接” 进行数据的 渎写。假设用户没有进行 前面的硬件连接工作 , 就点 击 “ 激活连接” 按钮 , 此时界面上会弹 出“ 超时错误 , 请检查接口” 的警告对话框 图3 作为提示。当用户 正确连接好 P c与 P L C, 将排除故障后再点击“ 激活连 u l l 舅; J 接” 便可进入“ 数据读写” 界面 图4 。 图2初始化连接及信息获取 图3出现错误时的提示对话框 数 据谈取 r数据莺 字 旁薜号一 ⋯ 二 ; } 弃 储器 ∈ 型 ll 二 l { 字 节趋j蚰 。广l 读 写字节 撖I 『一f 数% 广{ 囤曼 图4数据读写 在“ 数据读写” 界 面中, 若想读取 P L C的 1 0字节 的数据 , 先点选 “ 数据读取 ” , 其次选择存储器 的类型 I , 输入字节的起始地址 0 和读写的字节数量 1 , 然后点击“ 读取” 便可获得 1 0的当前值 此示例 中, I O 的当前值为 7 。数据写入的步骤与读取相似 , 不同之 处是在数 据值文 本框 中输人 写入 的数 值后点击 “ 写 入” 按钮。当进行完数据读写后 , 点击 “ 结束 ” 按钮断 开通讯连接 , 退 出系统。 4 结语 通过运行实例 , 得出以下结论 利用 V C编写程序 调用 P r o d a v e软件包 中的库函数 , 能够对 P L C数据存 储器的各部分进行快速准确地访 问, 实现了上位机通 过 MP I 方式与 s 7 3 0 0系列 P L C进行 的通讯。这种通 讯形式有效地利用了计算 机与 P L C的资源, 在此基础 数控专栏 c N c s e m In a r 上开发出监控软件 , 并将其应用到实际生产过程中, 能 够有效地对作业设备进行监控和管理 , 进而大大提高 工作效率 。 参考文 献 [ 1 ] 廖常初. s 7 3 0 0 / 4 0 0 P L C应 用技 术 [ M] . 北京 机械工 业 出版社 , 2 0 05 3 8 0 3 8 8 [ 2] 李建兴. 可编程程序控制 器应 用技术 [ M] . 北京 机 械工业出版社 , 2 0 0 4. [ 3 ] 孙鑫 , 余安萍. v c 深入详 解 『 M] . 北 京 电子 工、 I 出版社 , 2 0 0 6 7 0 3 7 2 5. [ 4]S I MA T I C P R O D A V E MP 1 V 6 . 0 Ma n u a l [ Z] . E d it i o n 0 5 / 2 0 0 5 A5 E 0 0 41 7 1 5 O一 01 . 第一作者 马健 , 男, 1 9 8 2年生, 研 究实习员, 主要 研 究方 向为机 电一体 化 。 编辑孙德茂 收稿 日期 2 0 1 0 - 0 7 3 0 文章编号 1 1 0 3 5 2 如果您想 发表对本文的看法, 请将文章编号 填入读者意 见调查表中 的相应位置。 制造技术与机床 投稿须知 为确保本刊登载文章的质量 , 便于与作者联系 , 缩短稿件处理周期 , 加快出版进度 , 我刊现 已开通 网上投稿系 统 , 并请广大作者投稿时注意以下要求 1 . 投稿时 , 以下信息必须如实并准确填写 1 作者基本信息 , 如联系方式有变化 , 应及时通过注册的用户名 和密码登录后修改 ; 2 稿件题 目、 稿件英文题 目、 中文摘要 、 英文摘要 、 中文关键词 、 英文关键词 ; 3 中图分类 号 、 文献标识码。以上项 目都不能用“ 无” 、 “ 没有 ” 等无效用词填写。另外 , 以下信息如果有, 也请如实并准确填 写 1 基金项 目; 2 参考文献。 2 . 稿件投出前请务必仔细校核 , 以免投 出后再修改 , 影响稿件处理进程和速度。 3 . 投稿后, 作者根据 自己注册的用户名和密码可随时登录我们的投稿系统查询所投稿件的审稿状态 , 所 以请 保存好用户名和密码。当已投出稿件必须要修改或有其他情况时, 通过 电子邮件 、 电话与我们联系 , 不要在网上 做重新投稿等操作 。更不要重复投稿。 4 . 本刊对来稿采用三审制度, 即初审 、 编审 、 终审 , 稿件在初审后还会根据需要请我刊聘请的外审专家进行外 审。稿件状态显示“ 可刊” 即表示稿件 已被本刊正式录用 , 显示“ 退稿” 即稿件没有被本刊录用 , 显示其他状态请 耐心等待。本刊的稿件处理周期一般约 3~ 8个月。 5 . 稿件如需加急 , 请在投稿时注明, 我们会按加急稿件来处理。 6 . 已投给本刊的稿件 , 如想再投给其他杂志 , 务请通过电话及时通知本刊编辑部。否则 , 造成“ 一稿多投” 的 现象 , 后果 自负。 7 . 为扩大本刊及作者所著述文章 的影响, 本 刊已整体加入” 万方数据资源系统” h t t p / / w w w . w a n f a n g d a t a . c o rn. C H 和” C N K I 中国知网” h t t p / / w w w . c n k i . n e t / 等传播媒体 。为此, 本刊郑重声明 我们付给作者的稿酬中 已包含作者文章被相关媒体转载、 使用所可能产生的稿酬 , 作者若对上网或转载文章的版权有异议 , 请斟酌投稿。 8 . 作者请 自留底稿 , 不论是否录用 , 均不退原稿。 稿件要 求 1 . 本刊提倡简洁明快的文风 , 来稿文字应简练通顺 ; 对于 内容较丰富的稿件 , 文字 、 图表所占版面最多不应超 过 6 0 0 0字。要求全文文理通顺 , 公式 、 图表正确 , 没有泄密内容。 2 . 文章题 目应短小精悍 , 对全文有点睛之效 , 富有 吸引力 , 字数在 2 0字之内。稿件必须有 文章摘要 1 0 0~3 0 0 字 及关键词。投稿人还需要提供所有作 者的工作单位及所在地和 邮编 作 者署 名顺 序按 照稿件 上的顺序 为 准 , 在文章末尾写明第一作者的简介 , 内容包括 姓名 、 出生年 、 性别 、 工作单位 、 联系地址 、 邮编、 职务职称 、 主要 研究方向、 发表论文数量 、 联系电话及电子信箱等。 3 . 本刊要求作者提供稿件题 目、 作者 、 作者单位 、 摘要和关键词的英文。 4 . 插图应按现行制图标准绘制, 所有图样 照片和绘制的插图 的线条、 文字应清晰明了, 以便于本刊计算机 扫描处理和制版。其 中线条图 如零件 图、 装配图、 剖面图 、 流程图等 要求是矢量图, 灰度图精度不小于 8 0 0 d p i 。 5 . “ 参考文献” 请按以下顺序书写 1 图书类 序号 、 作者姓名 英文表示时 , 应姓在前、 名在后 、 书名 、 出版 社所在城市、 出版社 、 出版年; 2 杂志类 序号 、 作者姓名 英文表示时, 应姓在前 、 名在后 、 论文篇名 、 刊名 、 出版 年卷期号。详细格式需要按照 G B / T 7 7 1 4 2 0 0 5 文后参考文献著录规则 规范填写 。 投稿 网址 h t t p / / w w w . m t m t . c o rn. e n / 联 系电话 0 1 0 6 4 7 3 9 6 8 3 联 系邮箱 e d i t m t m t . c o m. c n 联 系人 王琦 等 、 £u lI平 0 删
展开阅读全文