1200与第三方设备标准TCP通讯问题 【已解决】

已锁定

LeeWheel

  • 帖子

    346
  • 精华

    4
  • 被关注

    25

论坛等级:侠士

注册时间:2004-04-20

普通 普通 如何晋级?

1200与第三方设备标准TCP通讯问题 【已解决】

13040

12

2017-04-20 09:42:54

不要给我推荐Modbus TCP之类的方法,第三方设备没有这个功能,只有TCP类似Socket通讯的方式。

现在遇到的问题:

  1、使用TRCV_C接收来自设备的数据,因第三方发送的为ASCII码,LEN设定为0,收到的数据格式设置为String的情况下,能够在收到数据中找到实际第三方设备发出的数据,但是前后都有乱码且数据的位置不唯一。

2、如果LEN设置成定长,比如我需要接收10个Byte的数据,收到的数据显示的只有8个Byte的字符,被截掉了2个Byte,如果改成设定LEN10,发8个字符,收到的更不对了。

补充一下,如果我发0987654321,显示87654321,但是中间我发过一个短的数字串,比如12345,然后再发0987654321,收到的数据全乱了。



解决方法,供参考:

1、第三方设备支持发送定长数据,所以我所有的解决方法都建立在定长基础上。

2、因为数据的格式是唯一的,见下面的图,有三个位置的字符是不会变的,两个小数点,一个逗号,如果发现收到的数据这三个char不对了,将TRCV_C整个重启,即CONT管脚复位一次即可清除端口接收缓冲区的数据(注意非DATA管脚数据),我始终认为就是缓冲区在作怪导致。

3、Data区不要用String格式,根据手册描述,String会有两个Byte的占位,导致收到的数据会被砍头2个Byte,我这里使用Char数组接收,也方便判断收到的格式。





1200与第三方设备标准TCP通讯问题 【已解决】 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15705条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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