恭喜,你发布的帖子
发布于 2024-12-27 09:48:21
17楼
这个是我目前的处理方式,本来是梯形图写的,导出成awl文件用记事本打开后:
SUBROUTINE_BLOCK 耳标数据处理:SBR8
TITLE=子程序注释
VAR
t_nation1_B:BYTE;
t_nation1_I1:WORD; // 高位数值
t_nation1_I2:WORD; // 转化后
t_nation2_I:WORD;
t_dec_h8_2:DWORD; // 十进制高8位2带0
t_dec_h8_3:DWORD; // 十进制高8位3带0
t_dec_l4:DWORD;
t_dec_h8_add1:DWORD; // 高位相加1
t_dec_h8_add2:DWORD; // 高位相加2
END_VAR
BEGIN
Network 1
// 程序段注释
LD SM0.0
LPS
MOVB VB1000, LB0
AENO
ANDB 2#1111, LB0
AENO
BTI LB0, LW1
AENO
BTI VB1001, LW5
LPP
MOVW LW1, LW3
AENO
*I +256, LW3
AENO
MOVW LW3, VW1010
+I LW5, VW1010
Network 2
// 将读取到的字节分到2个双字中的低位,防止因最高位为1导致计算成负数
LD SM0.0
MOVB VB1002, VB1102
MOVB VB1003, VB1103
MOVB VB1004, VB1105
MOVB VB1005, VB1106
MOVB VB1006, VB1107
Network 3
// 将高2位字节乘16777216(16#FFFF)中的上4位1677
LD SM0.0
MOVD VD1100, VD1140
*D +1677, VD1140
Network 4
// 将高2位字节乘16777216(16#FFFF)中的下4位7216,并处理相关数据
LD SM0.0
MOVD VD1100, VD1128
AENO
*D +7216, VD1128
AENO
MOVD VD1128, VD1144
AENO
/D +10000, VD1144
AENO
MOVD VD1144, LD7
AENO
*D +10000, LD7
AENO
MOVD VD1128, VD1132
-D LD7, VD1132
Network 5
LD SM0.0
MOVD VD1104, VD1148
AENO
/D +10000, VD1148
AENO
MOVD VD1148, LD11
AENO
*D +10000, LD11
AENO
MOVD VD1104, VD1136
-D LD11, VD1136
Network 6
LD SM0.0
LPS
MOVD VD1132, LD15
AENO
+D VD1136, LD15
AENO
AD>= LD15, 10000
= V3.0
LRD
AN V3.0
MOVD LD15, VD1124
MOVD VD1140, LD19
AENO
+D VD1144, LD19
AENO
MOVD LD19, VD1120
+D VD1148, VD1120
LPP
A V3.0
MOVD LD15, VD1124
-D +10000, VD1124
MOVD VD1140, LD19
AENO
+D VD1144, LD19
AENO
MOVD VD1148, LD23
AENO
+D LD19, LD23
AENO
MOVD LD23, VD1120
+D 1, VD1120
Network 7
// 数值转化为字符串
LD SM0.0
DTS VD1120, VB1200, 0
AENO
DTS VD1124, VB1240, 0
AENO
ITS VW1010, VB1280, 0
Network 8
// 将空格换为0
LD SM0.0
LPS
SSCPY VB1200, 5, 8, VB1220
AB= VB1221, ' '
MOVB '0', VB1221
LRD
AB= VB1222, ' '
MOVB '0', VB1222
LRD
AB= VB1223, ' '
MOVB '0', VB1223
LRD
AB= VB1224, ' '
MOVB '0', VB1224
LRD
AB= VB1225, ' '
MOVB '0', VB1225
LRD
AB= VB1226, ' '
MOVB '0', VB1226
LRD
AB= VB1227, ' '
MOVB '0', VB1227
LRD
AB= VB1228, ' '
MOVB '0', VB1228
LRD
SSCPY VB1240, 9, 4, VB1260
LRD
AB= VB1261, ' '
MOVB '0', VB1261
LRD
AB= VB1262, ' '
MOVB '0', VB1262
LRD
AB= VB1263, ' '
MOVB '0', VB1263
LPP
SSCPY VB1280, 6, 3, VB1300
Network 9
LD SM0.0
LPS
SCPY VB1220, VB1320
SCAT VB1260, VB1320
SCPY VB1300, VB1380
SCAT VB1320, VB1380
AB= VB54, 1
SCPY VB1320, VB1340
SCPY VB1380, VB1400
LPP
AB= VB54, 2
SCPY VB1320, VB1360
SCPY VB1380, VB1420
Network 10
// 耳标分拆为2个数据
LD SM0.0
BMB VB1381, VB8000, 7
AENO
MOVB 65, VB8007
AENO
MOVB 16#30, VB7999
AENO
STD VB7999, 1, VD8100
AENO
BMB VB1388, VB8000, 8
AENO
MOVB 65, VB8008
AENO
STD VB7999, 1, VD8104
AENO
MOVR VD1024, VD8108
END_SUBROUTINE_BLOCK
请填写推广理由:
分享
只看
楼主