RS485总线实现多机通信
!
已有的解决方式 实 现 !"#$% 网 络 多 主 节 点 通 信 的 方 式 在 以 往 的 论 文 中 也
H 驱动程序都启动了,只是从机不从自身的 G F H 驱动程序采集
数据而 以 , 但 这 样 不 能 保 证 启 动 后 的 G F H 驱 动 程 序 不 对 !"#$% 总线进行通信访问。
(D( 实行双机热备
双机热备就是在一个监控系统中有两台上位机"# 年 $% 卷第 & 期 应信号都可传送到两台机器,即两台机器的驱动程序都可接收 到来自设备的数据。 这样任何时刻都不会发生命令对撞。 当双机 切换模块在一定时间内接收不到主机传来的命令信号,则认为 主机故障, 从而进行主辅机切换, 使辅机成为主机。 这种实现方式双机切换的决定权由切换模块决定,上位计 算机不能自由控制,而且上位机并不能判断自己的目前主辅机 状态。 双机切换模块虽然不拦截来自下层设备的数据, 但上位机 仅通过来自下层设备的数据来判断数据所对应的标签也不是一 件容易的事情。 当双机切换模块一旦损坏,上层计算机将与下层设备失去 联系, 这就失去了双机的优势。 于大多数监控系统此条件都可满足。
图$ 改进型双机切换模块的应用
"
双机切换程序的具体实现 与串口通信的方式有多种, 为了便于操作, 驱动程序在辅机
状态运行时采用事件通知的方式,并开启一个专门读写操作的 线程。至于如何创建和初始化串口, 可查看其它参考书, 我只写 出进行双机切换的代码, 编程工具采用 0122 #’"。 开启的读写操作的线程代码如下:
3456 14789:;<=<>?96@AB0+)C D<8E6F G C8+,C 6HI3:J9KLM C8+,C 6H=57?N5O5EM * * 获得线程启动时间 6H=57?N5O5E P Q?:=5;L14RE:@FM OST=<>?96,RE P =,UIM * * 线程运行标志 H<5V?@OST=<>?96,REF G 5W@XOSTJ95E-?>3?>F G 5W@OS<147Y9E6V? XP ZUAAF G 6HI3:J9KLP"M 895:1477I3?E:@OS<147Y9E6V?[ \6HI3:J9KL[ ZUAAFM 5W@@6HI3:J9KL\I0S,]1Y^,FPP I0S,]1Y^,F G
(#
!"#$% 总线通信双机监控程序的设计及应用
!"#$% 总线通信双机监控程序的设计及应用
,-./01 213 4556/728/91 9: ;<68/56- ;27=/1-. ;91/89> ?>90>2@ :9> !"#$% A<.
朱耀春 白
北京 ()**)+) 焰 (华北电力大学&北京’自动化系,
$’( 改进型的双机切换模块
改进型的双机切换模块, 其原理为: 在模块中增加两路控制 信号, 可由上位机通过增加一块 ) * + 卡来控制主辅机切换, 上位 机的数据同步通过网络进行交互。 当监控系统开始工作时, 先通 过 ) * + 卡的输出口输出控制信号的为主机,当主机不能正常工 作时, 辅机通过 ) * + 卡的输出口输出控制信号接管控制。 改进型双机切换模块能够由上层计算机控制各路的主辅机 状态, 但是增加了两块 ) * + 卡, 增大 了 系 统 出 现 故 障 的 可能性。 而且上层计算机程 序还要增加发出控制字的 专门代码。 也不能避免双机 热备方式 的 部 分 缺 点 , 如网 络通信的中断和串口卡的 故障所引起的问题。 其结构 图如图 $。
(D* 增加一个 !"#$% 双机切换模块 为 了 解 决 !"#$% 多 主 通 信 问 题 还 可 以 增 加 一 个 硬 件 模 块
用于控制两台上位机下传的命令。其原理可简单描述如下: 双机切换模块上层与两台上位机的串口连接,下层与上位 机要操作的设备相连。它会根据每台机器的启动先后来决定主 辅机, 先启动的机器为主机, 后启动的机器为辅机。它会拦截辅 机发给下层设备的命令只让主机的命令通过,而下层设备的响
摘 要
由于其结构简单、 通信速率高、 传输距离远等优点, 特别适用于中小型 !"#$% 总 线 是 工 控 领 域 常 用 的 一 项 总 线 技 术 , 要采用双机系统或多机系统提高监 ,B" 和监控系统。但是 !"#$% 的总线机制只允许存在一台主设备对其进行数据访问, 控系统的可靠性就必须使用特殊的解决方式。已有的解决方式可采用双机热备或增加一台双机切换模块, 但都有一定的缺 陷。从问题的根本着手, 通过改编设备驱动程序来解决双机监控的问题, 拓宽了解决问题的思路, 节省了系统开支, 并提高 了系统的可靠性和稳定性。 关键词: 双机热备, 多主系统, 监控系统, !"#$% 串口通信, JB 编程 "#$%&’(% E=- !"#$% K<. /. 2 79@@91 K<. 8-7=1/L<- /1 8=- >-26@ 9: 5>97-.. 7918>96M213 3<- 89 /8. ./@56- .8><78<>-M=/0= 79@N @<1/728/91 .5--3 213 :2> 8>21.@/../91 3/.8217-M/8 /. .5-7/266O 2556/72K6- 89 8=- .@266 .726-3 ,B" 9> @91/89> .O.8-@DA-72<.8=- !"#$% K<. 3/.2669P 8P9 @2/1 -L</5@-18. 28 8=- .2@- 8/@- 89 =963 8=- K<.M/: O9< 23958 @<68/56- @27=/1-. .O.8-@ 89 -1=217- 8=- .O.8-@Q. >-6/2K/6/8OMO9< @<.8 82R- .9@- .5-7/26 @-8=93.DH1- -S./8/10 @-8=93 /. 89 23958 @<68/56- @27=/1-. =98 89 =2T-M8=- 98=-> /. 89 233 2 @<68/56- @27=/1-. 791T->8/10 @93-6MK<8 8=-.- @-8=93 266 =2T- 8=-/> K6-@/.=DE=/. 2>8/76-M8=>9<0= >-9>021/U/10 5>90>2@M.96T-. 8=- 5>9K6-@ :>9@ 8=- 5>9K6-@Q. K2./7 9<8.-8.MK>-23/10 5>9K6-@V.96T/10 P2O 9: 8=/1R/10M.2T/10 8=- .O.8-@ -S5-13/8<>-M213 /17>-2./10 8=- .O.8-@Q. >-6/2K/6/8O 213 .82K/6/8OD )*+,-&.$W!"#$% .->/26 79@@<1/728/91M@<68/56- @27=/1-. =98 89 =2T-M@<68/V@2.8-> .O.8-@M@91/89> .O.8-@MJB 5>90>2@@/10 随着计算机, 微电子技术的发展, 工业控制领域也发生着深 刻的变化, 智能仪表被大量应用到工业现场, 它们提供了以前无 法得到的大量信息。这些智能仪表与上层监控计算机的通信有 着多种方式, 较简单的是使用串行通信方式, 因为它使用的传输 线较少, 在长距离通信时比较经济。 在多种串行接口标准中, 通信速 !"#$% 接口以其结构简单、 率高、 传输距离远等诸多优点被得到广泛应用。但 !"#$% 总 线 的数据通信大多是半双工 (采 用 两 线 制 ) 的, 采用主从式通信方 式,即在整个网络中任一时刻只能有一个节点成为主节点处于 数据发送状态, 其他所有节点都必须处于数据接收状态。 如果有 两个节点或两个以上节点同时向总线发送数据,将会导致发送 失败, 数据不可用。所以在 !"#$% 总线搭建的网络中, 往往只使 用一台上位机对整个系统进行监控。 如果只用一台上位机进行监控,一旦此上位机硬件出现故 障, 将导致整个系统的瘫痪, 这在工业场合一般是不允许的。如 果使用双上位机形式或多上位机形式对下层系统进行监控, 将 会极大的提高可靠性, 但需要解决 !"#$% 网络多主节点的通 信 问题, 如何解决此问题是双机监控形式搭建成功的关键。 一台为主机, 一台为从机。 通常情况下由主机串口卡与下层设备 实时监视主机状态, 并从主 进行通信, 从机通过网络 (EB? F G? ) 机的网络数据库获取所需的数据, 不启动自身的 G F H 驱动程序; 一旦从机发现主机停止响应, 便接管控制, 启动自身的 G F H 驱动 程序进行数据采集。当故障的主机重新启动后,查询从机的状 态, 并与从机信息同步, 同步完成后, 从机停止控制工作, 将控制 权还给主机。 从理论上讲这种方法是一种非常可行的方法,两台上位机 只有一台 G F H 驱动程序与 !"#$% 总线进行通信, 是一种单主节 点系统。但是这种方式有以下问题: 两台上位机必须通过网络相互通信, 网络通信的中断将 () 导致两台上位机都成为主机, 从 而 同 时 访 问 !"#$% 总 线 , 使系 统瘫痪。 主机故障排除后要重新接管控制, 而此时从机的 G F H 驱 *) 动已经启动, 如何再退出 G F H 驱动也是比较困难的。 当主机的串口卡出现异常时, 从机不能判断主机的串口 I) 卡是否工作正常, 也就失去了双机的优势所在。 实际上当前的组态软件实现双机热备时,主机和从机的 G F