回复:优化的FB块中用AT访问出错。谢谢。

Letham

西门子1847工业学习平台

  • 帖子

    2023
  • 精华

    43
  • 被关注

    360

论坛等级:至圣

注册时间:2006-04-15

钻石 钻石 如何晋级?

发布于 2017-09-26 12:47:54

5楼

展开查看
以下是引用question在2017-09-26 12:07:22的发言 >4楼

谢回复。尝试着改成uint,还是报警,意思大概为At后的变量长度超出原变量。因为uint长度大于sint。我查了相关书籍,string确实为254个byte。


可能是其它原因导致的。

以下是引用Letham在2017-09-26 10:59:54的发言 >3楼:1:当声明STRING...

引用3楼详细内容:

1:当声明STRING 时没有声明 字符个数时,系统默认为MESSAGE[254];

2:而SINT 的表示范围 -128---+127 之间。


解决办法 把MAX_LENGTH 改为UINT

以下是引用question在2017-09-26 10:33:25的发言 >2楼:谢谢楼上的回复。问...

引用2楼详细内容:

谢谢楼上的回复。问题解决了。上一个Message变量也要设定为IDB。

但新问题出现了,最大长度为-2,实在没明白为啥。




再次感谢Letham。

不用找了 

最根本原因 就是下面的!

1:当声明STRING 时没有声明 字符个数时,系统默认为MESSAGE[254];

2:而SINT 的表示范围 -128---+127 之间。


我范了原则性错误,字符串所占空间 是 字符个数+2,最大是256,如果将MAX_LENGTH改为 UINT,那么 AT_MESSAGE 的长度 为257 bytes 大于256了!

不要钻牛角尖了 ,缩小 MESSAGE ,或者 将 MAX_LENGHT 改为 USINT (0-255)即可!

人生就像一场旅行!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10590条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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