资源描述:
7 8 冶 金 动 力 MEr A U UR GI C AL P OW E R 2 0 1 4 年第 8 期 总 第1 7 4期 , ; 嗓 自动化 % % 利用 F E T C H / WR I T E方式实现计算机 和西门子 S 7 P L C直接通讯 张 世 灰 安徽 马钢 自动化信息技术有限公 司 . 安徽马鞍山 , 2 4 3 0 1 1 【 摘 要】 介绍了 西门 子s 7 系列P L C 和计算机通 讯的几种方式, 着重F E T C H / W R I T E 通讯方式的组态配置、 原理、 报 文格式等内容; 同时描述了计算机通讯模块的TC P / I P S o c k e t 通讯的原理、 程序流程图、 多线程操作、 以及如何利用 V C 2 0 0 5 实现整个通讯模块。 【 关键词】 P L C ; 多线程; 通讯 【 中图分类号】 T P 3 9 3 【 文献标识码】B 【 文章编号】 1 0 0 6 6 7 6 4 2 0 1 4 0 8 0 0 7 8 0 4 To Ac h i e v e Di r e c t Co mmu n i c a t i o n b e t we e n Co mp u t e r a n d S i e me n s S 7 PLC Us i n g FETCH[, 、 VRI TE Z h a n g S h i y o u Ma s t e e l A u t o m a t i o n& l n f o m a t i o n C o m p a n y o f Ma a n s h a n I r o n& .s e f Co. L t d . ,Mo a n s h a a ,A n h u i 2 4 3 0 1 1 ,C h i n a 【 A b s t r a c t ]S e v e r a l c o m mu n i c a t i o n m o d e s b e t w e e n S i e me n s S 7 P L C a n d c o m p u t e r s y s t e m a y e i n t r o d u c e d f o c u s i n g o n t h e c o n fig u r a t i o n ,p ri n c i p l e a n d me s s a g e f o r ma t ,e t c .o f F E T CH / WRI T E c o mmu n i c a t i o n mo d e .T h e p rin c i p l e s ,p r o g r a m fl o w c h a r t ,mu h i - t h r e a d e d o p e r a t i o n o f t h e T CP / I P S o c k e t c o mmu n i c a t i o n o f c o mp u t e r c o mmu n i c a t i o n mo d u l e a n d h o w t o u s e V C十 2 0 05 t o i n t e g r a t e t he wh o l e mo d u l e aye a l s o de s c rib e d . [ Ke y wo r d s ]P L C ;m u l t i - t h r e a d i n g ;c o m mu n i c a t i o n 1 前言 随着 P L C性价 比的不断提高, 其应用范围不 断 扩大,特别是近年来 P L C向着大型网络化方向发 展 , 已经渗透到钢铁 , 化工电力, 制造 、 运输等各个行 业中。 针对 P L C编程 、 计算能力有限及 P C机大量应 用的情况 , P C机与 P L C的结合使用就成 为必然趋 势。在各行各业的控制系统 中西门子的 S 7 P L C被 广泛采用 , 由于西门子公司没有公开西门子的 S 7以 太网通讯协议 , 目前 7 - - 4 0 0 P L C和 P C机通讯的方 式主要有以下几种 1 通过西 门子 O P C 服务 器实现 P C机和 P L C 通讯 2 利用西门子的 S A P I 西 门子应用程序编程接 口调用西门子提供的动态链接库函数来实现 P C 机应用程序和 P L C之间的数据之间交换 。 3 在 P L C和 P C机 之间建立 通讯连接 ,调用 P L C的通讯功能块 ,利用 T C P / I P协议之间和 P C机 进行通讯。 4 在利用 F E T C H / WR I T E方式实现 P L C和 P C 机之间通讯 ,直接读取 P L C的 M区、 I 区、 Q区、 D B 区等区域内的任何数据。 在以上 四种方式虽然都能和 P L C实现数据交 换 ,前三种通讯方式有的要安装数量不等的西门子 软件 , 有的只能交换某一特定数据块的数据 , 增加系 统 的软件成本 和调试维护 的难度 ;而第 四种利用 Wi n d o w s操 作 系 统 中 的 T C P / I P协 议 和 P L C的 F E C T H / WR I T E通讯方式直接实现 P L C和 P C的数 据交换 , 不仅节省了系统 的软件成本 , 同时加快了系 统 的响应速度 ,可以读 S 7 P L C中所有区域内的数 据 。 2 S 7 P L C端的通讯 T C P / I P是当前应用最为广泛的通讯协议 , 广泛 应用 于各种 P C网络 ;西 门子 的工业 以太 网卡如 C P 4 4 3 1 也支持 T C P / I P协议 ,为 S 7 P L C和 P C通 讯提供了硬件基础。T C P / I P 协议实现了两种通讯方 式 面向连接 的 T C P 通 讯方式和无 连接的 U D P 2 0 1 4年第 8 期 总 第 1 7 4期 冶 金 动 力 l v l L A L L U R G I C A LP O WE R 7 9 通讯方式; 由于工业现场的数据都十分重要 , 为 了保 证通讯的准确无误 ,我们采用 了面向连接的通讯方 式 。 2 . 1 S 7 4 0 0 一 P L C 的硬件及网络组态 为 了使 s 7 4 0 0 一 P L C 能够和 P C 机进行通讯 , 需要通过 C P 4 4 3 1 以太网模块, 将 S 7 4 0 0 一 P L C连 到以太网上,同时设置好正确的 I P地址和网关等, 进入西门子硬件组态 , 选择 C P 4 4 3 一 l以太网模块的 属性 , 在相应的位置设置好 I P地址 、 网关和子网掩 码 等相关 信息 ;在西 门子 的 网络组 态 软件 N E T P R O 中要建立一个通讯连接 , 在 网络协议栏 中选择 T C P协议, 同时设置好本地通讯的端 口, 同时将连 接的方式设置为 F E T C H 厂 WR I T E方式 ,且 P L C作为 通讯服务器方。 2 . 2 S 7 P L C端通 讯程序 的实现 利用 F E T C H / WR I T E方式, 其他设备可以存取 S 7 系统 中的任何存储期的数据 ,进行数据交换时 , 在 S 7 4 0 0 P L C段不需要编写任何程序 , 只需要按照要 求设置好相应的通讯连接 ,并且 P C机按要 F E T C H 和WR I T E的P D U的要求发送相应的通讯请求报文 P L C 。 P L C根据接受的请求报文后对请求报文解析处 W RI T E r e q u e s t f r a me O S y s t em I D I ’ S” 1 ’ 5 ” 2 te n g t h o f h e a d e r 0 x l 0 3 l D OPc o de 0 x 0t 4 t e n g t h OP c o d e 0 x 0 3 5 oP co d e 0 x0 3 6 OR G f i g I d 0 x 0 3 7 L s n g t h OR G fi e l d 0 x 0 8 8 O RGl D 9 DBNR A St a r t a d d r e s s Hi g h By t e B Lo w Byt e C ten g t h Hi g h By t e D L o w By t e E E mp t y f i e l d 盏 O x F F . F te n 【 g t h e mp t y fi e l d 0 x 0 2 Da t a up t o 6 4 K 理 , 然后返回确认数据报文或响应数据报文 , 完成一 次通讯操作。 为了通过 F E T C H / WR I T E方式和 P C机通讯 , 必 须要知道每个通讯报文的数据组成 , S 7请求报文的 长度有 1 6个字节组成 ,分为向 P L C写数据 的数据 报文格式和从 P L C读取数据的数据报文格式。 2 . 2 . 1 向 P L C写数据的请求报文和相应报文格式 见图 1 写数据请求报文 由 P C发送到 P L C, 主要包括 系统标识、 报头长度、 操作代码表示、 操作代码长度、 操作代码等 , 这些 内容对每个报文都是固定的值 , 同 时报文包括操作的区域 D B区、 I 区、 O区、 M区、 C 区、 T区 、 数据块号 在对 D B区操作时有效 , 范围 为 1 - 2 5 5 、 以字节为单位的起始地址、 以字节为单 位的数据长度和要发送的具体数据。写数据响应报 文由 P L C发送到 P C机 ,确认写数据请求报文的处 理情况 ,如果成功 ,则数据写响应报文的错误代码 E r r o r fi e ld 为 0 , 如果请求报文中的数据有误, 则 通过写数据响应报文返回错误代码。 2 .2 .2 从 P L C读取数据的请求包和相应包格式 见 图 2 WRI T E a c k n o wl e d gme n t f r ame O S y s t e m I D 譬 ” S” 1 z” 5” 2 L e n g t ho f h e a d e r 0 x l 0 3 l DoPG o d s 0 x 0 1 4 L en gt hOPc od e 0 x0 3 5 oPc o de 20 x0 4 6 Ac kfi e I d O x 0F 7 L e n g t ha c kfi e l d 0 x 0 3 8 E r r o r fi e l d 嚣NO 9 E mp t y fi e l d 0 x F F A L en gt he mp t yfi e l d 互Ox O7 B C D f r e e E F 图 1 写数据报文及其响应报文 冶 金 动 力 MEr Al LURGI cA L P OW E R 2 0 1 4年第 8 期 总 第 1 7 4期 F E TCH r e q u es t f r a me O S y s t e m I D , ’ S“ 1 , ’ 5” 2 L e n g t h o f h e e d e r 0 xl O 3 l D oPc ode 0 x01 4 Le n g t hOPc o d e O x 0 3 5 OP co d e O x05 6 OR Gf I e I d O x O 3 7 L e n g t hOR G f i e l d 0 x 0 8 8 ORG l D 9 DBNR A S t a r t a d d r e s s Hi g h By t e B Lo w By t e C t e n g t h Hi g h By t e D L o w By t e E E mpt yfi e l d 0 xFF F L e n g t h e mp t y fie l d O x 0 2 F ET CH r e sp on s e f r a ma O S y s t e m I D 嚣 ” S” 1 盘” 5 ” 2 L e n gt h o f h e ad e r Ox l0 3 l D oPc od e 0 x 01 4 L e n g t h OP C O d e 0 x 0 3 5 oPc od e 0 x 06 6 A c k fi e l d 0 x 0 F 7 L e n g t ha c kfi e l d 0 x 0 3 8 Er r o r f | 宣I d 置No 9 Emp t y fie l d 0 xFF A L en gt h e m p t y f i el d 墨OxO 7 B C D f r e e E F D a t a u p t o 6 4 K b u t on l yi fE r r o rn o . 盘 O ● 图2 读数据请求报文及其相应报文 读数据请求报文由 P c发送到 s 7 P L C, 能够读 应 ; 测试有没有数据发送 , 若有 , 则接受 , 若没有 , 则 取的数据区域和写入数据相 同,主要不同是操作代 继续测试 ; 整个程序的流程 图如图 3 。 码不同 , 其读请求报文不含数据区; 读响应报文除了 含有报文头外,还包含请求数据包中所请求读取的 数据 , 若错误 , 则返 回错误代码。 3 计算机端通讯程序 在 WI N D D O WS操作系统下,通过 Wl N S O C K 网络编程接 口, 来实现应用程序的网络通讯功能 ; 为 了减少程序的 C P U占用率和提高系统的实时性 , 采 用了 O v e r l a p p e d I / 0 重叠式 I / 0 S o c k e t 通讯方式 。 通常一台 P C机有可能和多台 P L C连接 ,为使程序 高效执行和减少程序设计 的复杂性 ,将采用多线程 技术 ,P c机和不 同 P L C的通讯有不 同的线程来完 成 , 整个通讯程序采用 V i s u a l C 2 0 0 5开发平台 下完成。 3 . 1 通讯程序 的主要流程及程序实现 P C机和一台 P L C通讯的功 能都在一个线程函 数中完成。 主要过程有 首先初始化 Win S o c k e t 通讯 动态连接库 , 然后创建套接字 , 并且将其绑定到 T C P 协议上 ; 然后开始和 P L C的以太网接 口进行建立连 接 ; 在连接建立好以后 , 开始 向 P L C发送读或写数 据的请求报文,并进行 I / 0重叠操作,等待 P L C响 延迟 3 0 秒 初始化 设置P L C的 地 址和端口 创建套接字 延迟 3 0秒 YE 厂 I 等 待 响 应 报 文 I 处理接 受到的数据 再次调用接受数据函数 图 3 P C 机 通 讯 流 程 图 为了和多个 P L C进行通讯 , 可以在通讯模块中 为每个 P L C创建一个通讯线程 , 由不同的线程和不 同的P L C进行通讯,这样便于系统的调试和维护, 同时程序设计 时采用了通讯容错技术 ,在 P C机和 P L C的网络出现故 障时 , P C机每 隔 3 0 s 会和 P L C 建立通讯连接 , 只要 P L C重新在线 , 下转第 8 3页 2 0 1 4 年第 8 期 总 第1 7 4期 冶 金 动 力 ME T A L L U R G I C A L P I 、 忱 R 8 3 于事件的。基于时间的调度可在指定的时间触发一 触发一个动作 ,当指定的数据源的状态发生变化时 次或多次 ;基于事件的调度用一个有效的数据源来 触发一个事件。 黼 嬲 l 氆| | 誓矗|鬻 , 毪 ≯ 。 舞 一 l 嫱 i 童 斌翻sⅢⅢ | t 。。 嚣姆 目衄 F I X 基千畸 甄\ 基于事件顼 1l ⋯ 国 E 瑚, I x _ e 方 一~⋯. ⋯.⋯一 ⋯⋯一 ⋯⋯一⋯ 一⋯一. ~~一~ ~, ⋯ ~ ⋯⋯ 一~ 臼 G l o b a l * S I , 吗g 动器 r 名称 燕选式 事件袭塑 阀隔 攮f 姑避 田忿 安全 l j F i x l v J a t l F i x 3 2 F I X W_ G JL 瑚 t l _c V 息为真 ’ O 0 O 0 0 5 舻 静苯 酾盘 帮肋和值息 2 F i x E ● A t 2 l l t 3 7 .F I X甜n JI 鞠. r _ c V 总为真 O 0 0 0 0 5 蘑 t 报裹 3 , i ≮ Z v ● n t 3 F i a 3 2 r H “L L F - c V i 踊暮 - O 0 O 0 0 5 用尸棚本 报警历史 l ti v en t 4 P I l 3 2 lI X D T 6 _ L 堋 r _ c y 息为置 ∞ O 0 0 5 增户■本 罐艋 标签蛆 5 一 F i x Z v e n t 5 F i x 3 2 F I I l m E 皿 J L 瑚 F _ c v 息 寓 篱 O 0 0 0 0 5 麓嘛 s黝 调度 - F i x E v e u t S F i x 3 2 F n , E U 硒- D r _ C V 息为真 O 0 ∞0 6 , j i 圆漕 “ k. 1 . f - I r i x E v t a t 7 F i x 3 2m J b _ B id IC M .a t M r C V 盅为 葛 O 0 0 0 ‘O 5 甩 目黝 菌面 矗 f i x E v ● n 埽 r i t 筻 肛 R s L F 簋为真 O 0 O 0 O 5 琦芦脚本 鞲盥 西面支持文件 ~ ~ 1 0 图 2 语音报警设置 语音报警 与画面报警 同时运用在喷煤系统 中, 二者双管齐下, 设备始终处于无缝监控下 , 双重措施 保证系统的安全稳定运行 。 4总结 发现隐患、 及时排除、 有效降低故障率; 提高设 备的自动化控制水平 , 减少人为因素影响 , 降低劳动 量 ; 应用综合报警 , 并推广至其他维护 区域 , 有效保 障喷煤系统乃至高炉区域系统的安全稳定运行 。在 莱钢型钢高炉喷煤 自控系统的 日常维护中,总结维 护中遇到的各种问题和解决方法 ,对以后维护过程 中的判断与处理有很大的帮助。 【 参 考 文 献】 【 1 】 马国华.监控组态软件及其应用 第 1 版 【 M 】 . 北京 清华大学出版 社, 2 0 0 1 . 【 2 】 黄友锐,曲立国. P I D控制器参数整定与实现 【 M 】 . 科学出版社. 2 01 0. 1 【 3 】 方彦军. 李世红. 基于 I F I X的软件报警技术在自动测量系统中的 实现[ J 】 . 工业仪表 与 自动化装置. 2 0 0 4 . 3 收稿 日期 2 0 1 4 - 0 2 -2 7 作者 简介 崔青 1 9 8 1 一 , 女, 大学本科学历, 工程师, 现从事自 动化 仪表与维护工作。 上接 第 8 0页 不需要人工干预 , 系统 自动恢复 正 常。 3 . 2 数据字节顺序的处理 因 s 7 4 0 0 P L C和 P c机 的在整数 ,浮点数等数 据类型中高低字节顺序正好使相反的,为了保证数 据正确的传输 ,在 P C机端需要对接受到的 P L C数 据和发送给 P L C的数据进行高低字节顺序 的对调; 利用 C 十 语言中的 u n i o n 联合体 可以实现该功能 , 过程如下 首先定义联合体 S 7 D a t a , 在联合体内部 定义一个整型数 两个字节 变量 i D a t a 、 浮点数 四 个字节 变量 f D a t a和一个 4个字节的 c h a r 字符 类 型的数组变量 c D a t a 【 4 ] , 在数据 接受 自 P L C或发往 P L C整型数或浮点数 分别联合 体 的 i D a t a或 f D a t a 变量中, 然后将 c D a t a [ 4 】 中将高低字- 4-4 -- 顺序颠倒 , 联 合体中的 i D a t a或 f D a t a 根据 P L C数据类型就是 P L C中相应数据的值了。 4 结论 为了便于控制系统和二级系统的集成,已经将 本技术开发成中间件 ,成功应用于江阴兴澄铁钢 1 加热炉三级系统 、 马钢车轮压轧线机械手控制系统 , 马钢 合肥 1 连续退火机组等生产线上 , 通过近几 年的运行 , 证明该通讯方式非常简洁高效 , 保证 了工 艺数据和设定值的高效传输。 【 参 考 文 献】 【 l 】 9 A n t h o n y J o n e s J i m O h l u n d .Wi n d o w s 网络编程技术 [ M】 . 北京 机械工业出版 社. 2 0 0 0 收稿 日期 2 0 1 4 - 0 4 - 0 4 作者简介 张世友 1 9 7 4 一 , 男, 安徽来安县人. 工程师, 现从事冶金 行 、J 处理线控制系统 的编程 词试工作 。
展开阅读全文