PLC200自由口通讯时,计算接收的数据个数! 点击:1416 | 回复:2



jlw8558868

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 5回
  • 年度积分:0
  • 历史总积分:21
  • 注册:2012年4月25日
发表于:2013-01-05 10:20:17
楼主

这是一个PLC200自由口通讯的问题。

根据领导要求,要我做一个物理抽象层,只是接收数据,数据的格式内容等属于协议层,我不要去管,我只负责让PLC接收外部设备的数据即可。要求我给协议层2个信号:1、接收完成状态位;2、接收数据长度。

     好了,第一个问题不难,难再第二个问题。

      1:如果用RCV来接收数据,由于我不是协议层,所以我不知道数据格式,包括起始符和结束符,所以我只能用时间来结束,设置SMW90和SMW92,采用信息间隔时间,比如说SMW92设为100MS,从接收开始到结束,整个时间是100MS,到了会自动进入接收完成中断。但是我怎么统计我实际接收的数据长度?rcv有一个参数,是TBL,但这个是用户自己设定的,RCV会根据这个值来接收数据,而不能反过来根据这个来读取我实际所取的数据长度。

      2:用SMB2的中断次数来计算数据长度。产生一次中断,计数器加1,。这样也能计算出数据长度,好了,又来问题了,我不知道怎么判断数据接收结束,如果用计时器超时来判断,要结束接收,只能是中断禁止,这样就停止接收数据了,但这个参数是全局变量,发送数据的完成中断也会中止!发送完成中断和接收完成中断是必须要的,否则不知道发送数据有木有结束。

     这样我就陷入一个矛盾,好像是计算不出来数据长度的,各位大侠可有什么办法没有?

 

不好意思,是我自己有一个理解错了呢,RCV的TBL是自动获取的,又学到一个知识了




wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2013-01-05 10:42:50
1楼

将要发的数据打包,将包的长度及协议类型加到包头,接收时判断

jlw8558868

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 5回
  • 年度积分:0
  • 历史总积分:21
  • 注册:2012年4月25日
发表于:2013-01-05 10:45:38
2楼
回复内容:
对:wingwf2000关于将要发的数据打包,将包的长度及协议类型加到包头,接收时判断内容的回复:

都说了协议层的我都不知道,包括包的长度,协议类型等等。要是知道,就不会存在现在我的疑问

热门招聘
相关主题

官方公众号

智造工程师