andy_gao
级别: 略有小成
精华主题: 0
发帖数量: 283 个
工控威望: 448 点
下载积分: 2186 分
在线时间: 226(小时)
注册时间: 2012-08-02
最后登录: 2024-11-15
查看andy_gao的 主题 / 回贴
楼主  发表于: 2021-04-22 19:19
S7-1200与调试助手的TCP通讯时总是少开头的两个字符,如图

用NDR信号做计数器,发一次数据后计数值是1,说明PLC并没有把调试助手的一条数据分两次接收。

附程序,求大侠帮助
tcp_test.zip (400 K) 下载次数:92



  
李鹏飞
级别: 正式会员
精华主题: 0
发帖数量: 28 个
工控威望: 95 点
下载积分: 420 分
在线时间: 20(小时)
注册时间: 2019-05-31
最后登录: 2024-01-15
查看李鹏飞的 主题 / 回贴
1楼  发表于: 2021-04-25 13:47
前面要加起始符的,加上起始符,直接占用前两位
焦刘吉
紧跟时代发展,努力做好时代青年
级别: 工控侠客
精华主题: 0
发帖数量: 1460 个
工控威望: 4682 点
下载积分: 14955 分
在线时间: 429(小时)
注册时间: 2015-05-19
最后登录: 2024-11-14
查看焦刘吉的 主题 / 回贴
2楼  发表于: 2021-04-25 19:35
可以指定一下长度试一下,或者单独建立个数据块,用个CHAR   数组
Rules are always made by the strong, and history is always written by the winners.
andy_gao
级别: 略有小成
精华主题: 0
发帖数量: 283 个
工控威望: 448 点
下载积分: 2186 分
在线时间: 226(小时)
注册时间: 2012-08-02
最后登录: 2024-11-15
查看andy_gao的 主题 / 回贴
3楼  发表于: 2021-04-27 08:56
引用
引用第2楼焦刘吉于2021-04-25 19:35发表的  :
可以指定一下长度试一下,或者单独建立个数据块,用个CHAR   数组

现在就是把DATA改成了char数组,然后再用char to string转换的,就是想看看有没有直接的方法
焦刘吉
紧跟时代发展,努力做好时代青年
级别: 工控侠客
精华主题: 0
发帖数量: 1460 个
工控威望: 4682 点
下载积分: 14955 分
在线时间: 429(小时)
注册时间: 2015-05-19
最后登录: 2024-11-14
查看焦刘吉的 主题 / 回贴
4楼  发表于: 2021-04-27 21:44
byte数组也是可以的
Rules are always made by the strong, and history is always written by the winners.
shenyuan
级别: 略有小成
精华主题: 0
发帖数量: 112 个
工控威望: 357 点
下载积分: 1163 分
在线时间: 42(小时)
注册时间: 2018-01-30
最后登录: 2024-11-26
查看shenyuan的 主题 / 回贴
5楼  发表于: 2021-04-28 16:29
西门子定义字符串的时候第一位是字符串长度,第二位是实际长度。
shenyuan
级别: 略有小成
精华主题: 0
发帖数量: 112 个
工控威望: 357 点
下载积分: 1163 分
在线时间: 42(小时)
注册时间: 2018-01-30
最后登录: 2024-11-26
查看shenyuan的 主题 / 回贴
6楼  发表于: 2021-04-28 16:30
图片:
所以建议你用数组接收
shenyuan
级别: 略有小成
精华主题: 0
发帖数量: 112 个
工控威望: 357 点
下载积分: 1163 分
在线时间: 42(小时)
注册时间: 2018-01-30
最后登录: 2024-11-26
查看shenyuan的 主题 / 回贴
7楼  发表于: 2021-04-28 16:32
图片:
发送的话 注意下指针的位置就好了
本帖最近评分记录:
  • 下载积分:+5(holdkcxyz) 热心助人!
    湛蓝小尔
    工控交流 Q703935819
    级别: 家园常客

    精华主题: 0
    发帖数量: 349 个
    工控威望: 642 点
    下载积分: 2101 分
    在线时间: 80(小时)
    注册时间: 2014-03-03
    最后登录: 2024-07-10
    查看湛蓝小尔的 主题 / 回贴
    8楼  发表于: 2022-04-13 17:02
    这就很怪异,我少结尾两个。
    我看错了,我也是少开头两个。
    发送指令,少结尾两个。
    摸摸索索,就把LEN改成字符串加2,就可以了。string[10],LEN那里就写12
    专心搞钱
    Q群943838323   博图
    Q群703935819   昆仑通态
    湛蓝小尔
    工控交流 Q703935819
    级别: 家园常客

    精华主题: 0
    发帖数量: 349 个
    工控威望: 642 点
    下载积分: 2101 分
    在线时间: 80(小时)
    注册时间: 2014-03-03
    最后登录: 2024-07-10
    查看湛蓝小尔的 主题 / 回贴
    9楼  发表于: 2022-04-13 17:10


    说错了,这是接收,多两个字符,。
    专心搞钱
    Q群943838323   博图
    Q群703935819   昆仑通态
    guolibin
    auto_glb@qq.com
    级别: VIP会员
    精华主题: 1 篇
    发帖数量: 640 个
    工控威望: 1034 点
    下载积分: 5368 分
    在线时间: 294(小时)
    注册时间: 2008-05-03
    最后登录: 2024-11-17
    查看guolibin的 主题 / 回贴
    10楼  发表于: 2022-04-14 16:46
    要用数组,BYTE[]或CHAR[],建议CHAR[](PLC在线监视ASCII可视)
    因为STRING比较特殊,他是INT+CHAR[]形式,前2个字节是STRING总长(最大254)和实际字符长度