在编制各种程序,尤其是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 *)
楼主最近还看过