Schneider-施耐德LEC 使用技巧-ASCII 码转换为HEX 和BCD 码 点击:651 | 回复:0



江湖混混-余辉

    
  • [版主]
  • 精华:53帖
  • 求助:44帖
  • 帖子:3351帖 | 28451回
  • 年度积分:603
  • 历史总积分:131640
  • 注册:2006年4月25日
发表于:2014-03-22 09:24:01
楼主

在编制各种程序,尤其是ASCII 通讯的应用时,常需要进行数据格式的转换

 

<例程1>说明ASCII 数据如何转换为HEX 及BCD 码的数据

 

(*ASCII to HEX and BCD *)
(* %MW0 = 3139 %MW1 = 3537 => %MW30=16#1957 %MW31=1957 *)
LD 1
[ %MW0 := 16#3139 ] (* 19 ASCII = 3139 HEXA *)
[ %MW1 := 16#3537 ] (* 57 ASCII = 3537 HEXA *)
LD 1
[ %MW10 := %MW0 AND 16#000F ] (* 16# XXX9 *)
[ %MW11 := %MW0 AND 16#0F00 ] (* 16# X1XX *)
[ %MW12 := %MW1 AND 16#000F ] (* 16# XXX7 *)
[ %MW13 := %MW1 AND 16#0F00 ] (* 16# X5XX *)
LD 1
[ %MW20 := SHL( %MW10, 8 ) ] (* 16# X9XX *)
[ %MW21 := SHL( %MW11, 4 ) ] (* 16# 1XXX *)
[ %MW22 := %MW12 ] (* 16# XXX7 *)
[ %MW23 := SHR( %MW13, 4 ) ] (* 16# XX5X *)
LD 1
[ %MW30 := %MW20 OR %MW21 ] (* 16# 19XX *)
[ %MW30 := %MW30 OR %MW22 ] (* 16# 19X7 *)
[ %MW30 := %MW30 OR %MW23 ] (* 16# 1957 *)
LD 1
[ %MW31 := BTI( %MW30 ) ] (* 1957 *)


<例程2>说明HEX 数据如何转换为ASCII数据。


(* HEX to ASCII *)
(* %MW30 = 16#1957 => %MW74 = 3139 %MW75 3537 *)
LD 1
[ %MW40 := %MW30 AND 16#000F ] (* 16# XXX7 *)
[ %MW41 := %MW30 AND 16#00F0 ] (* 16# XX5X *)
[ %MW42 := %MW30 AND 16#0F00 ] (* 16# X9XX *)
[ %MW43 := %MW30 AND 16#F000 ] (* 16# 1XXX *)
LD 1
www.plcworld.cn
[ %MW50 := %MW40 ] (* 16# XXX7 *)
[ %MW51 := SHR( %MW41, 4 ) ] (* 16# XXX5 *)
[ %MW52 := SHR( %MW42, 8 ) ] (* 16# XXX9 *)
[ %MW53 := SHR( %MW43, 12 ) ] (* 16# XXX1 *)
LD 1
[ %MW60 := %MW50 OR 16#0030 ] (* 16# XX37 *)
[ %MW61 := %MW51 OR 16#0030 ] (* 16# XX35 *)
[ %MW62 := %MW52 OR 16#0030 ] (* 16# XX39 *)
[ %MW63 := %MW53 OR 16#0030 ] (* 16# XX31 *)
LD 1
[ %MW70 := %MW60 ] (* 16# XX37 *)
[ %MW71 := SHL( %MW61, 8 ) ] (* 16# 35XX *)
[ %MW72 := %MW62 ] (* 16# XX39 *)
[ %MW73 := SHL( %MW63, 8 ) ] (* 16# 31XX *)
LD 1
[ %MW74 := %MW72 OR %MW73 ] (* 16# 3139 *)
[ %MW75 := %MW70 OR %MW71 ] (* 16# 3537 *)



楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师