发布于 2012-09-12 08:56:16
2楼
先把你的程序贴出来:
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注释
BEGIN
Network 1
// 200做主站,分析仪做从站
// 通讯协议
// 发送指令 起始符 0x02 结束符0x03,4个地址位,2个指令位,数据位根据指令变化,2个BCC校验位
// 接收指令 起始符 0x06 结束符0x03,4个地址位,2个指令位,数据位根据指令变化,2个BCC校验位
// 数据块里面有两条指令数据,200周期发送这两条命令获得分析仪不同的相应数据
LD SM0.0
CALL SBR1, V2210.1, VW2220, VW2230
Network 2 // 网络标题
// 网络注释
LD SM0.1
MOVB 16#09, SMB30
MOVB 16#EC, SMB87
MOVB 16#03, SMB89
MOVB 16#06, SMB88
MOVW 250, SMW92
MOVB 255, SMB94
ATCH INT0, 23
ATCH INT1, 9
ENI
MOVD &VB300, VD0
XMT *VD0, 0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK XORC:SBR0
TITLE=子程序注释
VAR_INPUT
PNT:DWORD; // 数据区首地址指针
NUMB:BYTE; // 数据区字节数
END_VAR
VAR_OUTPUT
XORC:BYTE; // 异或校验码
END_VAR
VAR
NUMI:INT; // 数据区字节数
TEMP1:INT; // 循环变量
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVB 0, LB5
BTI LB4, LW6
FOR LW8, +1, LW6
Network 2
LD SM0.0
XORB *LD0, LB5
INCD LD0
Network 3
NEXT
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK ETH0_CTRL:SBR1
TITLE=此 POU 由以太网向导生成,用于控制在位置 0 的 CP 243-1 模块。ETHx_CTRL (控制) 指令用于使能和初始化 CP 243-1 以太网模块。此指令应在每次程序扫描时被调用,且在您的程序中仅使用一次。 此模块的命令字节被指定为 QB2。
//
// 未为此模块配置连接:
//
VAR_OUTPUT
CP_Ready:BOOL; // CP243-1 模块准备就绪
Ch_Ready:WORD; // 通道准备就绪位
Error:WORD; // 错误字
END_VAR
BEGIN
Network 1 // 此 POU 受密码保护,不能编辑和查看。
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK ReceiveEnd:INT0
TITLE=中断程序注释
VAR
TEMP1:WORD;
TEMP2:WORD;
TEMP3:WORD;
TEMP4:DWORD;
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释
LDB= SMB86, 16#20
LPS
MOVD &VB1000, VD90
AENO
BTI *VD90, LW0
LRD
MOVW LW0, LW2
AENO
-I +4, LW2
AENO
ITB LW2, VB10
LRD
CALL SBR0, &VB1002, VB10, VB1400
LRD
HTA VB1400, VB1500, 2
LRD
MOVW LW0, LW4
AENO
-I +2, LW4
AENO
ITD LW4, LD6
LRD
MOVD VD90, VD94
AENO
+D LD6, VD94
AENO
MOVD VD94, VD98
+D 1, VD98
LRD
MOVB *VD94, VB1300
AENO
MOVB *VD98, VB1301
LPP
AB= VB1300, VB1500
AB= VB1301, VB1501
LPS
AB= VB1006, 16#4D
MOVB 250, SMB34
ATCH INT2, 10
CRETI
LPP
AB= VB1006, 16#31
MOVB 250, SMB34
ATCH INT3, 10
CRETI
Network 2
LD SM0.0
XMT *VD0, 0
END_INTERRUPT_BLOCK
INTERRUPT_BLOCK SendEnd:INT1
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
RCV VB1000, 0
S Q1.0, 1
END_INTERRUPT_BLOCK
INTERRUPT_BLOCK XMT2:INT2
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
DTCH 10
MOVD VD0, VD4
+D +11, VD4
XMT *VD4, 0
END_INTERRUPT_BLOCK
INTERRUPT_BLOCK XMT3:INT3
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
DTCH 10
XMT *VD0, 0
END_INTERRUPT_BLOCK