J$
西门子 !"#$%% 自由口通讯的两种 &’ 实现方法
西门子 !"#$%% 自由口通讯的两种 &’ 实现方法
何相勇 刘顺波 高运广 成 浩 第二炮兵工程学院("(%%$))
8d15 L2L/0 E15BW55/5 4d/ 1.L3/./Q4 -P !6A,AD! !" #$%%*+’ P0// L-04 B-..WQ1B241-QI64 W5/E !6,H86’ 1Q540WB41-Q 1Q
*+’ 2QE 4d/ HB41S7 B-Q40-35#,!’-.. 2QE 4d/ ’3255 -P !/0123*-04
1Q *’ 4- E/51VQ 4d/ B-..WQ1B241-Q L0-V02.N2QE V2S/
./012341
L2045 -P B-E/5 -P 4d/ L0-V02.I
5678,290YB-..WQ1B241-QN*+’NP0// L-04N&15W23 ’ee
摘 要
本 文 讨 论 了 西 门 子 !"#$%%*+’ 自 由 口 通 讯 的 实 现 , 在 *+’ 端 使 用 !6,H86’ 指 令 、 在 *’ 端 使 用 &’JI% 中 的
,!’-.. 控件和 ’!/0123*-045 类实现了通讯程序的设计,并给了相应的程序的部分代码。
关键词:通讯 ,*+’,自由口,&15W23 ’ee
在 工 业 控 制 过 程 中 , 常 常 需 要 用 一 台 上 位 机 去 控 制 多 台
*+’,实现分散控制与集中管理。本文在 !"#$%% *+’ 端利用自
由口通讯,在 *’ 端分别利用 ,!’-.. 控件和 ’!/0123*-045 类
编写通讯程序,实现它们之间的信息交换。
! "#$%&& 的自由口通讯模式
!"#$%% 支 持 多 种 通 讯 模 式 ,如 点 点 接 口(**6)、多 点 接 口
(,*6)等。**6 等通讯协议主要用于西门子系列产品之间的通讯
以及对 *+’ 编程。在自由口模式下,可由用户控制串行 通 讯 接
口,实现用户自定义的通讯协议。用户可以用梯形图程序调用接
收 中 断 、发 送 中 断 、发 送 指 令(7,8)、接 受 指 令(9’&)来 控 制 通
信操作。在自由口模式下,通信协议完全由梯形图程序控制。
!"#$%%’*: 上 的 通 信 口 是 与 9!;<) 兼 容 的 = 针 > 型 连
接器,*+’ 还提供了实现 9!;<) 与 *’ 机上 9!$?$’ 相连接 的
*’ @ **6 电缆,利用它可以方便地实现 !"#$%% 系列 *+’ 与 *’
之间的硬件连接。
!"#$%% 的 编 程 软 件 为 !8A*"#,1B0- @ C6D?$, 该 软 件 有
!8+、+2EE/0 和 FG> 三 种 编 程 模 式 , 有 !6,H86’ 指 令 和
6A’(?(#? 指令两种指令。 本 文 所 给 出 的 范 例 是 使 用 !6,H86’
指令的 !8+ 编程。
% "#$%&& ’() 端的通讯程序实现
$I( !"#$%% 自由口的初始化
!,G?% 是 !"#$%% 自由口 % 的 控 制 寄 存 器 ,!,G(?% 是 自
由口 ( 的控制寄存器,这些字节设置自由口的操作方式。
在本文中,选择自由口 % 通讯,=J%% 波特率,< 位字符,( 位
停 止 位 , 无 校 验 。 在 这 种 选 择 之 下 , 自 由 口 的 初 始 化 代 码 为
%%%%(%%(,可以通过如下的语句实现:
+> !,%I%
+> =,!,G?%
在程序第一次扫描的时候,调用含有通讯初始化语句的子
程序,对自由口进行初始化。通常在初始化的过程中还要连接口
( 的接收完成时的中断和和发送完成时的 中 断 , 中 断 连 接 实 现
的指令为:
+> !,%I%
H8’K 7,8B-.L3/4/ GM=
@ @ 3 连接口 % 发送完成中断
+> !,%I%
H8’K 9’&B-.L3/4/ GM$?
这两个中断是为了在发送和接收结束之后,把相关的设置
@ @ 连接口 % 接收完成中断
和变量恢复到控制程序中的设置和变量。
$I$ 自由口通讯的实现
发送子程序首先要通过设置 !,<"I" 为 % 来停止端口 % 的
接 收 ,然 后 把 数 据 写 入 缓 冲 区 ,对 数 据 进 行 转 换 ,使 用 发 送 指 令
7,8 发送数据。主要的指令及其注释如下:
+>
!,%I%
9
!,<"I"N GM(
,O&G GM(N&G())
K8H &G(?)N&G()JNGM(J
7,8 &G()),GM%
@ @ 根据实际的需要写入足够的数据
@ @ 将 &>(?) 中的数据转换成 H!’66 码
@ @ 口 % 发送
接收子程序首先要通过设置 !,<"I" 为 % 来停止端口 % 的
接收,然后使用接收指令 9’& 接收数据,把数据写入缓冲区,对
数据进行译码。主要的指令及其注释如下
+>
!,%I%
!,<"I"N GM(
9
9’& &G()),GM%
,O&G GM(N&G())
应的寄存器
@ @ 口 % 发送
@ @ 根据实际的 需 要 把 接 收 的 数 据 写 入 相
K8H &G(?)N&G()JNGM(J
@ @ 将 &G(?) 中的数据转换成 H!’66 码
在通讯中,通常还要指令本身的校验,必须加入指令校验子
程序,由于各种通讯协议的校验不一致,这里不对其进行讨论。
* 自由口通讯在 ’) 端利用 +"),-- 控件实现
,!’-.. 控 件 是 ,1B0-5-P4 公 司 提 供 的 简 化 的 C1QE-R5
下串行通讯编程的 HB41S/7 控件,它为应用程 序 提 供 了 通 过 串
口收发数据的简便方法。
在 &’JI% 开 发 环 境 下 使 用 ,!’-.. 控 件 必 须 首 先 利 用
,F’ 向 导 在 工 程 中 添 加 该 控 件 。*0-T/B4#UHEE 4- *0-T/B4#U
’-.L-Q/Q45 2QE ’-Q40-3III#U9/V154/0/E HB41S/ ’-Q40-35#U
,B01-5-P4 ’-...WQ1B241-Q5 ’-Q40-3N&JI%, 单 击 6D!A98,
OX,所有步骤缺省。
?I( 串口的初始化
串 口 的 初 始 化 一 般 在 窗 口 创 建 函 数 ’8/54&1/RYY*0/’0/Z
24/C1QE-R[\中实现实现,也可在自定义的函数中实现。
S-1E ’8/54&1/RYYOL/Q*-04[\
]
>CO9> 54^3/_C!‘&6!6G+AaC!‘’K6+>b
1P
[c.‘’-.9/BI’0/24/
[D:++N54^3/N’9/B4
[%N%N%N%\N4d15N
6>’‘,!’O,,(\\
《工业控制计算机》!""# 年 $% 卷第 ! 期
p[
&
4751?<-@A
’()*+" ,-./0123 45 672/42 89+ *5::;<06/405<= *5<>
B B
724;7< C$A
B B D/01 45 672/42
E
:F*5:(26GH24*5::I574,$@A
B B 选择 *8J$
:F*5:(26GH24K
/1I574 类 中 函 数 相 对 应 的 数 据 格 式 , 也 需 要 把 由 I9* 发 送 到
I* 端的数据转换成用户需要的数据格式。
本文介绍的通讯实现在除湿机状态监测软件中运行良好。
参考文献
$ 西门子公司G HnC!"" 可编程控制器系统手册,!"""G[ 第二版
! 西门子 (中国)有限公司自动化与驱动集团G 深入浅出西门子 HnC
!""I9*G 北京航天航空大学出版社,!""[G$! 第一版
[ 李 现 勇G]0=;/1 *gg串 口 通 信 技 术 与 工 程 实 践G 人 民 邮 电 出 版 社 ,
!""NGn 第二版
发 送 数 据 通 过 语 句 :F*5:(26GH248;4R;4 ,*812]/70/<4
N (2:5< HR2‘720l=2G) 65::;<06/405< 61/== D57 =270/1 R574G
,’2=4@@’2=4 可以是字符串或者为 LO42)77/O 型数组。
! 自由口通讯在 "# 端利用 #$%&’()"*&+, 类实现
如果在程序中使用多个串口,而且还要做很复杂的处理工
!"""G! *532Q;7; 网站资料
[收稿日期:!""NG$"G!o]