回复:Modbus RTU 通讯例子程序

Vanilla Coffee

  • 帖子

    151
  • 精华

    0
  • 被关注

    2

论坛等级:游士

注册时间:2004-10-21

普通 普通 如何晋级?

发布于 2005-06-11 10:58:12

0楼

下面是程序代码:

ORGANIZATION_BLOCK MAIN:OB1
TITLE=程序注释
BEGIN
Network 1
LD SM0.1
MOVB 1, SMB30
MOVW +0, SMW90
MOVW +10, SMW92
MOVB 50, SMB94
MOVB 2#10011100, SMB87
Network 2
LD SM0.1
ATCH INT0, 23
ATCH INT1, 9
ENI
Network 3
LD SM0.5
EU
LD SM0.5
ED
OLD
CALL SBR1, VB0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK Calculate_CRC:SBR0
TITLE=子例行程序注释
VAR_INPUT
起始地址:DWORD;
字节数:WORD;
END_VAR
VAR_OUTPUT
CRC_HI:BYTE;
CRC_Lo:BYTE;
END_VAR
VAR
Count_1:WORD;
Count_2:WORD;
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVW 16#FFFF, LW6
Network 2
LD SM0.0
FOR LW8, +1, LW4
Network 3
LD SM0.0
XORB *LD0, LB7
Network 4
LD SM0.0
INCD LD0
Network 5
LD SM0.0
FOR LW10, +1, +8
Network 6
LD SM0.0
SRW LW6, 1
Network 7
LD SM1.1
XORW 16#A001, LW6
Network 8
NEXT
Network 9
NEXT
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK Send_Message:SBR1
TITLE=子例行程序注释
VAR_INPUT
查询指令编号:BYTE;
END_VAR
BEGIN
Network 1
LDB= LB0, 0
MOVB 8, VB100
MOVB 16#03, VB101
MOVB 16#03, VB102
MOVB 16#0, VB103
MOVB 16#0, VB104
MOVB 16#0, VB105
MOVB 16#1, VB106
CALL SBR0, &VB101, 6, VB108, VB107
XMT VB100, 0
CRET
Network 2
LDB= LB0, 1
MOVB 8, VB100
MOVB 16#03, VB101
MOVB 16#03, VB102
MOVB 16#0, VB103
MOVB 16#25, VB104
MOVB 16#0, VB105
MOVB 16#1, VB106
CALL SBR0, &VB101, 6, VB108, VB107
XMT VB100, 0
CRET
Network 3
LDB= LB0, 2
MOVB 8, VB100
MOVB 16#03, VB101
MOVB 16#03, VB102
MOVB 16#0, VB103
MOVB 16#26, VB104
MOVB 16#0, VB105
MOVB 16#1, VB106
CALL SBR0, &VB101, 6, VB108, VB107
XMT VB100, 0
CRET
Network 4
LDB= LB0, 3
MOVB 8, VB100
MOVB 16#03, VB101
MOVB 16#03, VB102
MOVB 16#0, VB103
MOVB 16#27, VB104
MOVB 16#0, VB105
MOVB 16#1, VB106
CALL SBR0, &VB101, 6, VB108, VB107
XMT VB100, 0
CRET
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK Receive_Int:INT0
TITLE=中断例行程序注释
BEGIN
Network 1
LD SM86.7
O SM86.6
O SM86.0
CRETI
Network 2
LDB<> VB200, 7
CRETI
Network 3
LDB<> VB201, 16#03
CRETI
Network 4
LDB<> VB202, 16#03
CRETI
Network 5
LD SM0.0
CALL SBR0, &VB201, 5, VB3, VB2
Network 6
LDB<> VB206, VB2
CRETI
Network 7
LDB<> VB207, VB3
CRETI
Network 8
LDB= VB1, 0
MOVW VW204, VW1000
Network 9
LDB= VB1, 1
MOVW VW204, VW1002
Network 10
LDB= VB1, 2
MOVW VW204, VW1004
Network 11
LDB= VB1, 3
MOVW VW204, VW1006
END_INTERRUPT_BLOCK
INTERRUPT_BLOCK Send_Int:INT1
TITLE=中断例行程序注释
BEGIN
Network 1
LD SM0.0
RCV VB200, 0
Network 2
LD SM0.0
MOVB VB0, VB1
INCB VB0
Network 3
LDB> VB0, 3
MOVB 0, VB0
END_INTERRUPT_BLOCK
希望多交些同行的朋友。我的200/300技术交流群10671799
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33263条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。