编好程序之后,能发送数据,但是不能接受数据,返回值错误代码为8090,硬件连接,地址数据应该都没问题,机床数据也设置了,地址与ADI4匹配,求大神帮忙
最佳答案
8090错误是表示你没有为指定的逻辑基本地址进行配置或者你忽略有关一致性数据长度限制或你没有以十六进制格式在LADDR参数中输入起始地址。下面就具体针对8090问题作进一步分析。
使用SFC14 DPRD_DAT(读取DP标准从站的一致性数据)时,目标区必须与通过STEP7组态时为所选的模块的组态区域的长度相同,它是解包接收,从DP从站或者PROFINET IO设备上接收连续数据;你只能访问组态的起始地址的一个模块/DP ID的数据;而使用SFC15 DPWR_DAT(自标准DP从站写入一致性数据),源区必须与组态时通过STEP7所选模块的组态的区域的长度相同;
对于SFC14来说,参数LADDR为对方数据起始地址,其实就是本地要接收的解包数据存放在对方的起始地址,数据类型为“WORD’(字),必须以十六进制格式表示,如对方起始地址为256(在硬件组态界面中,比如变频器MM440挂在S7-300CPU的DP网络上作为DP从站,MM440 发送反馈信息给主站的数据区在QB256-263(共4个字),起始地址为256(十进制)), 在输入SFC14参数时必须在”LADDR“前输入”W#16#100“,一定要注意格式和输入方式;
同样对于SFC15来说,参数LADDR为对方数据起始地址,其实就是对方要接收的数据存放的起始地址,数据类型为”WORD“(字),同样以MM440变频器为例,MM40 接收主站的PZD(过程数据)存放在IB256-2637(4个字),所以在LADDR参数中也必须输入”W#16#100);
在S7-300PLC中如需要利用SFC14”DPWR_DAT” 和SFC15”DPWR_DAT’读写过程映像中不可用的地址范围内的一致性数据时要根据不同的通信协议,它传输的一致性数据是不一样的,并不是只有32个字节限制说法:对于PROFIBUS DP最多可以支持传输32个字节一致性数据;而对于PROFINET IO(以太网)通信协议,最多支持254个字节的一致性数据传输,但SFC访问的“具有”总长度一致性区域的长度必须与编程范围匹配。
对于S7-400PLC利用SFC14”DPWR_DAT” 和SFC15”DPWR_DAT’读写一致性数据传输的字节最大长度是32个字节,并不是64个字节。
所以对于数据一致性指令SFC14和SFC15的问题,首先检查你的目标去和源区必须与硬件组态区域长度相同,LADDR的参数输入格式和输入方式,以及一致性数据传输时字节的限制等。无论存放(SFC14)和接收(SFC15),一定要输入对方数据的起始地址,而且LADDR参数的地址必须与你的硬件组态时的地址是对应的,这点必须注意,否则通信是不能成功的。
可以参考以下链接:http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=63352&cid=1029
提问者对于答案的评价:
感觉程序没什么问题,地址也都是对应的,不造问题出在哪
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc145210.html