技术论坛

移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。

作者 主题
至圣

经验值: 10630
发帖数: 2355
精华帖: 10
主题:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 2016-07-17 10:31:27

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,


学无止境
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1311073&b_id=66&b_sid=0

至圣

经验值: 10630
发帖数: 2355
精华帖: 10
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 1楼 2016-07-17 10:32:25

STEP中的源程序应该没有问题,不知道是怎么回事,请大家指导一下吧


学无止境
以下网友喜欢您的帖子:

  
至圣

经验值: 127315
发帖数: 22000
精华帖: 824
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 2楼 2016-07-17 11:11:48

TIA 与 原来的 STEP 7不同,数据块是可以优化,仅变量名寻址的。

你可以试着改变一下DB的属性。



学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
奇侠

经验值: 6754
发帖数: 843
精华帖: 46
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 3楼 2016-07-17 18:09:29
以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。


Let's build the automation future!
以下网友喜欢您的帖子:

  
至圣

经验值: 10630
发帖数: 2355
精华帖: 10
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 4楼 2016-07-17 19:19:30
以下是引用yming在2016-07-17 11:11:48的发言 >2楼

TIA 与 原来的 STEP 7不同,数据块是可以优化,仅变量名寻址的。

你可以试着改变一下DB的属性。


TIA是否变成了按标签寻址,不再是按位寻址了?
学无止境
以下网友喜欢您的帖子:

  
至圣

经验值: 10630
发帖数: 2355
精华帖: 10
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 5楼 2016-07-17 19:21:00
以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地址不能...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

是否word和int混淆了
学无止境
以下网友喜欢您的帖子:

  
奇侠

经验值: 6754
发帖数: 843
精华帖: 46
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 6楼 2016-07-18 08:48:19
以下是引用月雨风云在2016-07-17 19:21:00的发言 >5楼:是否word和int混淆了
以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼:这是报警,不是错误...

引用3楼详细内容:

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地址不...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

还没明白我的意思啊,你看看你的DB6咋定义变量的,绝对和你使用的不一样!才报这种警告的。


Let's build the automation future!
以下网友喜欢您的帖子:

  
至圣

经验值: 10630
发帖数: 2355
精华帖: 10
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 7楼 2016-07-18 19:17:19
以下是引用 westcowboy在2016-07-18 08:48:19的发言 >6楼

还没明白我的意思啊,你看看你的DB6咋定义变量的,绝对和你使用的不一样!才报这种警告的。

以下是引用月雨风云在2016-07-17 19:21:00的发言 >5楼:是否word和int混淆了

引用5楼详细内容:

是否word和int混淆了

以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼:这是报警,不是错误...

引用3楼详细内容:

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地址不...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

查了一下,在STEP7中我没有定义DBW0~4,实际上我定义的都是bool变量,地址是DBX0.0~4.15


学无止境
以下网友喜欢您的帖子:

  
至圣

经验值: 13934
发帖数: 2007
精华帖: 43
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。
推荐帖


只看楼主 8楼 2016-07-19 10:57:35

STEP7 PORTAL 和STEP7 classic 有所不同,你移植过来,数据块是“非优化的访问方式”,所以你在编译时会出现以上的警告信息(如果是优化块访问方式会报警)

在博途 遇到这种情况应该怎么办?

以前在STEP7 V5.x 版本中只要数据块中存在某个地址,你可以任意引用,比如DB1.DBW0,DB1,DBD0,DB1.DBX0.0 等。但是在STEP7 PORTAL中,这样引用会有警告信息(非优化块)。

对此,STPE7 PORTAL中提供了 SLICE的访问方式,比如 你定义了一个DWORD类型的 变量T1,数据块名称为T,那么以下的访问方式都是正确的(不管数据块是优化还是非优化访问方式)

      A     "T".T1.%X0

      L     "T".T1.%B0

      L     "T".T1.%W1 

      L     "T".T1

SLICE访问 原理见下图。



人生就像一场旅行!
以下网友喜欢您的帖子:

  
至圣

经验值: 10630
发帖数: 2355
精华帖: 10
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 9楼 2016-07-19 13:51:49
以下是引用Letham在2016-07-19 10:57:35的发言 >8楼

STEP7 PORTAL 和STEP7 classic 有所不同,你移植过来,数据块是“非优化的访问方式”,所以你在编译时会出现以上的警告信息(如果是优化块访问方式会报警)

在博途 遇到这种情况应该怎么办?

以前在STEP7 V5.x 版本中只要数据块中存在某个地址,你可以任意引用,比如DB1.DBW0,DB1,DBD0,DB1.DBX0.0 等。但是在STEP7 PORTAL中,这样引用会有警告信息(非优化块)。

对此,STPE7 PORTAL中提供了 SLICE的访问方式,比如 你定义了一个DWORD类型的 变量T1,数据块名称为T,那么以下的访问方式都是正确的(不管数据块是优化还是非优化访问方式)

      A     "T".T1.%X0

      L     "T".T1.%B0

      L     "T".T1.%W1 

      L     "T".T1

SLICE访问 原理见下图。


感谢指导,以后得规范化的定义变量了。


学无止境
以下网友喜欢您的帖子:

  
奇侠

经验值: 6754
发帖数: 843
精华帖: 46
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 10楼 2016-07-20 08:38:25
以下是引用月雨风云在2016-07-18 19:17:19的发言 >7楼

查了一下,在STEP7中我没有定义DBW0~4,实际上我定义的都是bool变量,地址是DBX0.0~4.15

以下是引用 westcowboy在2016-07-18 08:48:19的发言 >6楼:还没明白我的意思啊...

引用6楼详细内容:

还没明白我的意思啊,你看看你的DB6咋定义变量的,绝对和你使用的不一样!才报这种警告的。

以下是引用月雨风云在2016-07-17 19:21:00的发言 >5楼:是否word和int混淆...

引用5楼详细内容:

是否word和int混淆了

以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼:这是报警,不是错...

引用3楼详细内容:

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地址...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

这就是原因啊,博途对语法和变量检查比原来严格了。

你定义的是bool,但是按照word,int访问的话,编译博途就会报警啊,因为它找不到这个变量。


Let's build the automation future!
以下网友喜欢您的帖子:

  
至圣

经验值: 10630
发帖数: 2355
精华帖: 10
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 11楼 2016-07-20 10:40:55
以下是引用 westcowboy在2016-07-20 08:38:25的发言 >10楼

这就是原因啊,博途对语法和变量检查比原来严格了。

你定义的是bool,但是按照word,int访问的话,编译博途就会报警啊,因为它找不到这个变量。

以下是引用月雨风云在2016-07-18 19:17:19的发言 >7楼:查了一下,在STE...

引用7楼详细内容:

查了一下,在STEP7中我没有定义DBW0~4,实际上我定义的都是bool变量,地址是DBX0.0~4.15

以下是引用 westcowboy在2016-07-18 08:48:19的发言 >6楼:还没明白我的意思啊...

引用6楼详细内容:

还没明白我的意思啊,你看看你的DB6咋定义变量的,绝对和你使用的不一样!才报这种警告的。

以下是引用月雨风云在2016-07-17 19:21:00的发言 >5楼:是否word和int混淆...

引用5楼详细内容:

是否word和int混淆了

以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼:这是报警,不是错...

引用3楼详细内容:

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地址...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

是的,以后定义变量得更加规范了,目前刚开始用TIA,很多地方还不习惯 。


学无止境
以下网友喜欢您的帖子:

  
侠圣

经验值: 3599
发帖数: 564
精华帖: 0
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 13楼 2017-01-05 14:12:21
以下是引用 westcowboy在2016-07-20 08:38:25的发言 >10楼

这就是原因啊,博途对语法和变量检查比原来严格了。

你定义的是bool,但是按照word,int访问的话,编译博途就会报警啊,因为它找不到这个变量。

以下是引用月雨风云在2016-07-18 19:17:19的发言 >7楼:查了一下,在STE...

引用7楼详细内容:

查了一下,在STEP7中我没有定义DBW0~4,实际上我定义的都是bool变量,地址是DBX0.0~4.15

以下是引用 westcowboy在2016-07-18 08:48:19的发言 >6楼:还没明白我的意思啊...

引用6楼详细内容:

还没明白我的意思啊,你看看你的DB6咋定义变量的,绝对和你使用的不一样!才报这种警告的。

以下是引用月雨风云在2016-07-17 19:21:00的发言 >5楼:是否word和int混淆...

引用5楼详细内容:

是否word和int混淆了

以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼:这是报警,不是错...

引用3楼详细内容:

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地址...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

如果定义的是int而要访问bool量是否是只有用版主说的方法才行?


学无止境
以下网友喜欢您的帖子:

  
侠圣

经验值: 3599
发帖数: 564
精华帖: 0
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 14楼 2017-01-05 14:14:30
以下是引用 westcowboy在2016-07-20 08:38:25的发言 >10楼

这就是原因啊,博途对语法和变量检查比原来严格了。

你定义的是bool,但是按照word,int访问的话,编译博途就会报警啊,因为它找不到这个变量。

以下是引用月雨风云在2016-07-18 19:17:19的发言 >7楼:查了一下,在STE...

引用7楼详细内容:

查了一下,在STEP7中我没有定义DBW0~4,实际上我定义的都是bool变量,地址是DBX0.0~4.15

以下是引用 westcowboy在2016-07-18 08:48:19的发言 >6楼:还没明白我的意思啊...

引用6楼详细内容:

还没明白我的意思啊,你看看你的DB6咋定义变量的,绝对和你使用的不一样!才报这种警告的。

以下是引用月雨风云在2016-07-17 19:21:00的发言 >5楼:是否word和int混淆...

引用5楼详细内容:

是否word和int混淆了

以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼:这是报警,不是错...

引用3楼详细内容:

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地址...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

如果定义int而要访问bool量是不是只有用版主说的方法才行?


学无止境
以下网友喜欢您的帖子:

  
至圣

经验值: 10630
发帖数: 2355
精华帖: 10
回复:移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。


只看楼主 楼主 15楼 2017-01-05 18:56:32
以下是引用LJCLWYF在2017-01-05 14:14:30的发言 >14楼

如果定义int而要访问bool量是不是只有用版主说的方法才行?

以下是引用 westcowboy在2016-07-20 08:38:25的发言 >10楼:这就是原因啊,博途...

引用10楼详细内容:

这就是原因啊,博途对语法和变量检查比原来严格了。

你定义的是bool,但是按照word,int访问的话,编译博途就会报警啊,因为它找不到这个变量。

以下是引用月雨风云在2016-07-18 19:17:19的发言 >7楼:查了一下,在STE...

引用7楼详细内容:

查了一下,在STEP7中我没有定义DBW0~4,实际上我定义的都是bool变量,地址是DBX0.0~4.15

以下是引用 westcowboy在2016-07-18 08:48:19的发言 >6楼:还没明白我的意思...

引用6楼详细内容:

还没明白我的意思啊,你看看你的DB6咋定义变量的,绝对和你使用的不一样!才报这种警告的。

以下是引用月雨风云在2016-07-17 19:21:00的发言 >5楼:是否word和int混...

引用5楼详细内容:

是否word和int混淆了

以下是引用 westcowboy在2016-07-17 18:09:29的发言 >3楼:这是报警,不是...

引用3楼详细内容:

这是报警,不是错误。

根本原因是博途对程序整体检查比原来严格了。

因为你DB6.DBW0在DB6中定义的数据类型与使用的数据类型不一致。

以下是引用月雨风云在2016-07-17 10:31:27的发言 >楼主:程序段 1,该地...

引用楼主详细内容:

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

程序段 1,该地址不能通过变量进行分配。,

这样是可以的,如果用标签寻址也不必如此。


学无止境
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
移植后的程序经常出现这种信息:程序段 1,该地址不能通过变量进行分配。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。