表5 发送缓冲区
VB153 字符数
VB154 起始字符 Byte0
VB155 状态信息 Byte1
VB156 数据区(十六进制ASCII码) Byte2
VB157 Byte3
VB158 Byte4
VB159 Byte5
VB160 Byte6
VB161 Byte7
VB162 Byte8
VB163 Byte9
VB164 Byte10
VB165 Byte11
VB166 Byte12
VB167 Byte13
VB168 Byte14
VB169 Byte15
VB170 Byte16
VB171 Byte17
VB172 BCC校验码(十六进制ASCII码) Byte18
VB173 Byte19
VB174 结束字符 Byte20
表6 其它
VB175 合成为VW175
作为接收时计算bcc码循环的INDX
VB176
VB177 合成为VW177
作为发送时计算bcc码循环的INDX
VB178
VB179 接收数据的bcc码
VB180 发送数据的bcc码
VB181 合成为VD181作为VB156的地址指针
(计算发送反馈信息的bcc码时使用)
VB182
VB183
VB184
VB185至VB198 未使用
VB199 本机站号
程序清单
主程序:
NETWORK 1
LD SM0.1 //第一次扫描调用初始化子程序
CALL initialize
NETWORK 2
LDB= VB134, VB199 //指令中的站地址与本机站地址相符
AB= VB102, 5 //指令类型为读指令
A M0.0 //BCC码校验正确
CALL Read //调用读子程序
NETWORK 3
LDB= VB134, VB199 //指令中的站地址与本机站地址相符
AB= VB102, 6 //指令类型为写指令
A M0.0 //BCC码校验正确
CALL Write //调用写子程序
NETWORK 4
LD M0.1 //指令接收完成后调用BCC码校验子程序
CALL Verify
NETWORK 5
LD SM4.5 //当端口空闲时启动RCV
RCV VB100, 0
Read子程序:
NETWORK 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
NETWORK 2
LD SM0.0 //将数据写入发送缓冲区
MOVB 103, VB154
MOVB 1, VB155
HTA *VD135, VB156, 16
MOVB 26, VB174
MOVB 21, VB153
NETWORK 3
LD SM0.0 //计算BCC校验码
FOR VW177, +1, +16
NETWORK 4
LD SM0.0
XORB *VD181, VB180
NETWORK 5
LD SM0.0
INCD VD181
NETWORK 6
NEXT
NETWORK 7
LD SM0.0
HTA VB180, VB172, 2 //BCC校验码写入发送缓冲区
NETWORK 8
LD SM4.5 //发送反馈信息
XMT VB153, 0
Write子程序:
NETWORK 1
LD SM0.0 //停止端口0的接收
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
NETWORK 2
LD SM0.0 //装入要写如数据源的地址指针
MOVD &VB115, VD145
NETWORK 3
LD SM0.0 //写入数据
ATH *VD145, *VD135, VB139
NETWORK 4
LD SM0.0 //指令执行的反馈信息写入发送缓冲区
MOVB 21, VB153
MOVB 103, VB154
MOVB 2, VB155
MOVB 26, VB174
NETWORK 5
LD SM4.5 //发送指令执行的反馈信息
XMT VB153, 0