技术论坛

同一个块居然在1200 1500表现不一样

作者 主题
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
主题:【探讨】同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 楼主 2020-11-14 23:30:21

        今天才发现个怪事。软件V16 UP2,自己用modbu_master写个轮询程序,轮询多个温控表。在1214里运转正常,机器上没有问题。直接把FB拷到1512里,一编译,直接报错!

        这就奇怪了,在1214正常工作,怎么到1512就直接报错了。而且,没有指向错误地方。1200 1500难道还有不能通用的?而且这报警也非常蹊跷。有哪位大神知道这报警是哪里出问题了?




1.PNG



 
以下网友喜欢您的帖子:

  
重要声明:

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

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

奇侠

经验值: 7117
发帖数: 456
精华帖: 1
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 1楼 2020-11-15 00:04:27

功能块的定义不同吧,你仔细对比一下


坚持就是胜利!
以下网友喜欢您的帖子:

  
至圣

经验值: 43587
发帖数: 15780
精华帖: 61
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 2楼 2020-11-15 09:06:11

你的通讯程序的参数没有填吧?


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
至圣

经验值: 13749
发帖数: 2032
精华帖: 16
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 3楼 2020-11-15 09:25:31

1200和1500的通讯口的硬件标识不一样。


工控毁我青春!
以下网友喜欢您的帖子:

  
至圣

经验值: 127352
发帖数: 22001
精华帖: 824
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 4楼 2020-11-15 09:53:16

1200的Modbus RTU 使用的CM模块和1500的485模块不一样。

即便是1200的MB功能块,针对使用的CM类型(485、485/422)还是CB,都有细微的差别,还是要检查一下,硬件标示、端口模式等等的设置。



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

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 楼主 5楼 2020-11-15 19:08:02

感谢各位的建议,我已经完美的解决这问题。MD,赶了一天车,就是要把1200的块用在这台1500的机器上。大家可能对我的提问没有吃透。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 37446
发帖数: 5133
精华帖: 47
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 6楼 2020-11-15 19:35:14

 本来1200编程环境下调用的MB BUS 库是1200的,你要使用在1500里面,那CPU属性是1500时再去库里面进行调用一次,或者重新替换1200环境的库功能块。


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 楼主 8楼 2020-11-16 15:02:43

新开的帖子也不能发帖,不知道原因。但第二段可以发,我先发结果出来,过程估计发不出来了。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样
推荐帖


只看楼主 楼主 9楼 2020-11-16 15:03:21

所以,我猜测,即使使用DB块优化,所谓的没有实际地址,其实是博图自己自动分配了地址,可能从1200里COPY过来的UDT,由于使用了array,有多组地址,直接COPY过来后,可能与1500自己分配的地址相冲突了。造成所谓的“只能使用不变零的位地址进行访问”。直接重建UDT,让博图自动分配好地址后,再将UDT内容完全COPY,就不存在这问题了。不知道我的理解对否?

刚开始没往这方面想,其实是走了弯路,由于COPY的UDT有10+,都没有问题,而只有这个有问题,就以为是通讯出了问题。应该是其它的UDT均没有使用array,没有造成地址冲突,所以才没有出事。



 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 10楼 2020-11-16 15:03:51

进一步猜想,如果使用了array的在1500里集成的FB,可能COPY到1200里直接使用,可能也会出现类似的问题。

由于在网上搜索了一圈“只能使用不变零的位地址进行访问”,只有一个度娘有结果,说是用了指针。但博图基本上没有指针概念了,也没多想。其实从报错上看,就是位地址出问题了。



 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 11楼 2020-11-16 15:04:57

就是第一段解决过程贴不出来。一直不准发贴。估计看这个也能猜出怎么解决的。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 12楼 2020-11-16 15:06:14

由于那个块编译通不过,所以我把另一个功能类似在1200的通讯块COPY到1500,编译居然通过了!


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 13楼 2020-11-16 15:07:00

以上是第一段内容,我一点一点的发出来,整体不能发


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 14楼 2020-11-16 15:09:32

但没有高兴多久,又出新夭蛾子了。只要一调用UDT里BOOL,立马报一样的错误。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 15楼 2020-11-16 15:10:02

既然编译能通过,调用出问题,那直接把FB内所有的程序屏蔽,相当于个空块,再次调用,报错。查看static变量有UDT,把array取消,只用一个UDT,再次调用,还是报错!调用没有用UDT的static变量,编译通过!看来问题出在UDT上了。随机调用UDT内的变量,居然有几个能通过!到这里,我大概反应过来了,就是UDT块出问题了。在1500内新建个UDT,把原UDT内所有内容COPY过去,在static内调用。删掉从1200中COPY过来的UDT,编译通过!调用也通过!把UDT类型改成array,设成1..40个,也即使用40组变量,再次在FC内调用FB的UDT内容,编译通过!



 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 16楼 2020-11-16 15:13:02

,发个帖就这么难吗?非得一点一点的切开发才通过!只要对大家以后有点用,就不枉我辛苦一场了。PS下:现场跟个垃圾场样,关键是电也通不上来。趁着有空,把我这个经历贴出来。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6266
发帖数: 696
精华帖: 19
回复:同一个块居然在1200 1500表现不一样


只看楼主 楼主 17楼 2020-11-16 15:26:44

12-14-15-9-10的看。


 
以下网友喜欢您的帖子:

  
版主

经验值: 69053
发帖数: 12266
精华帖: 59
回复:同一个块居然在1200 1500表现不一样


只看楼主 18楼 2020-11-16 19:28:04

编译不通过,那个错误提示应该有标记的吧

1200/1500的程序不一样是正常的


在1500里面重新调用一下库里面的函数,然后填写对应的参数试试?


我这边发帖什么都正常,可能你浏览器的原因吧


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 127352
发帖数: 22001
精华帖: 824
回复:同一个块居然在1200 1500表现不一样


只看楼主 19楼 2020-11-16 20:04:10
以下是引用RENHQ在2020-11-16 19:28:04的发言 >18楼

编译不通过,那个错误提示应该有标记的吧

1200/1500的程序不一样是正常的


在1500里面重新调用一下库里面的函数,然后填写对应的参数试试?


我这边发帖什么都正常,可能你浏览器的原因吧

可以精编一下,就容易看了。

这其实是一个关于UDT的话题。现象表述的不错。



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

  
至圣

经验值: 127352
发帖数: 22001
精华帖: 824
回复:同一个块居然在1200 1500表现不一样


只看楼主 20楼 2020-11-16 20:10:54
以下是引用hy_12306在2020-11-16 15:26:44的发言 >17楼

12-14-15-9-10的看。

我帮你编辑一下。

准备汇总在几楼?



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

  
收起
同一个块居然在1200 1500表现不一样
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。