您现在所在的是:

施耐德电气论坛

回帖:14个,阅读:3654 [上一页] [1] [2] [下一页]
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/5/28 9:42:16
#10楼
你可能把几个概念混在一起了。除了我前面说的问题,还有几个问题要注意:
以MW0为例:

MW0 对应40001,这个没有疑问,MW0是16位一个寄存器,也没有异议。

把MW0显示成十进制数,没有疑义,比如他的值是2, mw0中肯定存的是0b0000000000000010(二进制)
但是: 在PLC软件中把MW0在PLC软件中显示成浮点数,这就要看软件的习惯了,以前Unity是把MW0和MW1连起来算一个浮点数, 你修改mw0的值,mw1会变(浮点的低字节),现在so machine咋样,你可以试一下。按说,显示浮点数应该是mf0, 你把mf0改成2.0,会看到mw0和mw1中的十六进制数,就是浮点数2.0的“源码表示”,具体值就是0h“mw0”连接“mw1”的四个字节。

组态王肯定是吧40001中的1减一,就是零,装换成Modbus中的寄存器位置就是0000,去读取保持寄存器0000和0001,然后,按他的习惯转换成浮点数显示。

所以,你应该这么试:

以十进制数格式在PLC中观察:

%mw0:  ??  十进制显示
%mw1:  ??  十进制显示
%mw2:  ??  十进制显示
%mw3:  ??  十进制显示

%mw0:  ??  浮点数显示
%mw1:  ??  浮点数显示
%mw2:  ??  浮点数显示
%mw3:  ??  浮点数显示


然后下组态王中定义浮点数 AF:40001

从组态王中写AF=12.34

看PLC中哪个能对应,都不能对应,就调整字节顺序再试,肯定能对上。
50
191513027
文章数:3
年度积分:50
历史总积分:50
品牌积分(施耐德):3
注册时间:2020/5/28
发站内信
发表于:2020/5/28 16:43:45
#11楼
楼主,
1、M340的%M0对应MODBUS 的00001,这个是对的,注意偏移,M340的%M是从0开始的,MODBUS 是从00001开始的
2、M340的%MW0对应MODBUS 40001,这个也没有问题,同样注意偏移。
3、关于浮点型的问题,见截图,在M340里面,浮点型是32位的,在赋地址的时候,需要使用%MW,且必须是偶数结尾的,如截图中的浮点1,它的地址是%MW1000,它实际占用了%MW1000和%MW1001这两个%MW,所以浮点2必须从%MW1002开始赋地址。

另外很重要的一点,在M340的浮点型里面,数据格式是低字优先,这个需要和你的组态王对应起来,在组态王里面的浮点数据类型,也需要对应的选择低字优先。

附件中的截图是UNITY软件仿真,然后通过MODSCAN去读取仿真器数据的截图



附件 图像 3.jpg
53
zdy369
文章数:23
年度积分:53
历史总积分:53
品牌积分(施耐德):15
注册时间:2020/5/26
发站内信
发表于:2020/5/29 10:33:55
#12楼
首先感谢10楼和11楼的回答,测试后发现之前的确是组态王地址分配和高低字节都有问题,改为图片上这样再次测试时又遇到了新的问题,如图上所示。之前一直搞西门子的产品,现在这施耐德和组态王都是第一次用,发现还好多东西没搞明白。。。。。另外我这边施耐德编程软件是用的Unity pro13.
附件 31.jpg



附件 32.jpg

附件 34.jpg



附件 35.jpg

附件 36.jpg

附件 37.jpg

附件 38.jpg
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/5/29 13:11:23
#13楼
因为你设的只写,所以组态王重启的时候肯定是初始值0,这时候寄存里是多少你看不到。等你再输入值的时候才写下去。。。。这样用户操作的时候也会莫名其妙,所以,还是要读写的。

swp那个,不可能随便一个值就正常了,更可能是这个值只在启动的时候起作用,后面就不理会你的修改了,因为正常这个值不会总变的。这个你可以问组态王的支持,了解清楚工作原理。

所以,貌似问题搞清楚了: 地址偏移,字节顺序要设对,就可以通讯了。驱动里的其他参数也要闹明白,要不总是不可靠的。

莫迪康时代的字节和位序一直和软件工程师的习惯是反的,软件习惯bit0~bit15, 莫迪康就是bit 1到bit16,MSB和LSB是反的。。。
53
zdy369
文章数:23
年度积分:53
历史总积分:53
品牌积分(施耐德):15
注册时间:2020/5/26
发站内信
发表于:2020/5/29 15:36:48
#14楼
回复 #13楼 FreeTigerMan
我组态王浮点数变量读写属性全是设置的读写,SWAP变量也是设置的读写,但SWAP变量属性在驱动帮助里是只写,如图。正如你说的,重启组态王后变量没有回读,只有重新给SWAP写个值才会开始读取变量,这个应该是有问题的,而且也不符合操作要求。之前的问题清楚了,是地址偏移和字节顺序的问题。
附件 50.jpg

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005