s7200自由口通信收发时序 点击:714 | 回复:3



rexue

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:34帖 | 188回
  • 年度积分:0
  • 历史总积分:864
  • 注册:2001年6月19日
发表于:2007-10-16 23:10:00
楼主
我用s7-200自由口与下位机通信,现在的问题是我发下去的数据是正确的,但下位机在收到数据后会返回一个代码,我用rcv指令为何读不上来?时序上要注意什么?我在发送时用了中断9,然后去链接接收中断程序,但接受区没数据,我想问用中断8,然后去读smb2中的每个字和用rcv有何区别?谢谢!



arcs

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 15回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2004年5月25日
发表于:2007-10-17 09:44:00
1楼
你说的第一个方法我用过,没问题的,你的不行,说明你的具体程序有点问题。第二个没用过,不好说。

arcs

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 15回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2004年5月25日
发表于:2007-10-17 09:45:00
2楼
补充下:我用的是PLC和上位PC通讯的,呵呵。

rexue

  • 精华:1帖
  • 求助:0帖
  • 帖子:34帖 | 188回
  • 年度积分:0
  • 历史总积分:864
  • 注册:2001年6月19日
发表于:2007-10-17 14:16:00
3楼
现在问题是在上电时第一次可以写入,但以后就不可以了,一直没有接收,下面是我写的程序,不知哪里错了,望各位指正.谢谢!
Network1:
LD     SM0.1
MOVB   9, SMB30                    //自由口设定
MOVB   16#B0, SMB87                //检测接收结束符
MOVB   16#2A, SMB89                //结束符 
MOVB   30, SMB94                   //最大接收字符数
MOVB   100, SMB34                  //中断定时器
ATCH   INT_2:INT2, 10              //中断2为定时中断
ATCH   INT_0:INT0, 9               //中断0为发送完成中断
ATCH   INT_1:INT1, 23              //中断1为接收完成中断
ENI

INT0:
LD     SM0.0
RCV    VB200, 0                    //接收数据

INT1:
LDB=   SMB86, 16#2A                //接收到字符2A
LPS
AB<=   VB100, 10                   //寄存器VB100<=10
INCB   VB100                       //vb100+1
LPP
AB>=   VB100, 11                   //vb100>=11
MOVB   0, VB100                    //vb100=0


LD     SM0.0
ATCH   INT_2:INT2, 10              //打开定时中断0

INT2:
LD     SM0.0
DTCH   10                          //断开定时器
XMT    VB0, 0                      //发送数据

热门招聘
相关主题

官方公众号

智造工程师