这是一个PLC200自由口通讯的问题。
根据领导要求,要我做一个物理抽象层,只是接收数据,数据的格式内容等属于协议层,我不要去管,我只负责让PLC接收外部设备的数据即可。要求我给协议层2个信号:1、接收完成状态位;2、接收数据长度。
好了,第一个问题不难,难再第二个问题。
1:如果用RCV来接收数据,由于我不是协议层,所以我不知道数据格式,包括起始符和结束符,所以我只能用时间来结束,设置SMW90和SMW92,采用信息间隔时间,比如说SMW92设为100MS,从接收开始到结束,整个时间是100MS,到了会自动进入接收完成中断。但是我怎么统计我实际接收的数据长度?rcv有一个参数,是TBL,但这个是用户自己设定的,RCV会根据这个值来接收数据,而不能反过来根据这个来读取我实际所取的数据长度。
2:用SMB2的中断次数来计算数据长度。产生一次中断,计数器加1,。这样也能计算出数据长度,好了,又来问题了,我不知道怎么判断数据接收结束,如果用计时器超时来判断,要结束接收,只能是中断禁止,这样就停止接收数据了,但这个参数是全局变量,发送数据的完成中断也会中止!发送完成中断和接收完成中断是必须要的,否则不知道发送数据有木有结束。
这样我就陷入一个矛盾,好像是计算不出来数据长度的,各位大侠可有什么办法没有?
不好意思,是我自己有一个理解错了呢,RCV的TBL是自动获取的,又学到一个知识了