小白紧急求教:PLC300之间以太网通讯,以及AG_SEND/RECV指令用法

项目背景:两个PLC 分别是314 和 312,都配的CP343-LEAN,要实现以太网通讯。
程序:OB35中调用FC5(AG_SEND)和FC6(AG_RECV),发送数据在DB1中,接收数据在DB2中

问题:
1.连通后,314发往312的数据可以成功发送并被接受,312发往314的不可以,请问这两个cpu之前存在主从关系吗?312发往314不成功是什么原因?

2.已实现的例子是发送存储于DB中的BYTE类型数据,现在想要发送开关量(BOOL),也要通过DB吗?麻烦各位老师具体说明数据类型以及参数设置,谢谢!

3. FC5/FC6中 "SEND" 口的参数怎么理解?我将教程中“P#DB1.DBX0.0 BYTE 50”  的  “BYTE 50”  改为“BYTE 2” ,自动变成了DB1.DBB0 , 这是为什么?指针P呢?  

4. FC5的"LEN"  数据长度必须与发送数据的实际长度相同吗?

程序截图如下,请各位老师看看有什么问题(图片是314的,312除了LADDR口其他一样)
或者推荐一些实用的书!
小白一名,做本科毕设急用,希望各位不吝赐教!!多谢!!

图片说明:

小白紧急求教:PLC300之间以太网通讯,以及AG_SEND/RECV指令用法    小白紧急求教:PLC300之间以太网通讯,以及AG_SEND/RECV指令用法   

最佳答案

1、两者不是主从关系,是握手关系。
2、要通过DB。字与字节中包括位,即开关量(BOOL)。
3、“P#DB1.DBX0.0 BYTE 50,表示从DB1.DBX0.0开始共50个字节长度。
4、与发送数据的实际长度相同。
5、其他问题:见
《CP343_1之间的以太网通讯》下载: 
http://ftp.gongkong.com/UploadFile/Datum/2008-5/2008051608153100001(CP343_1之间的以太网通讯).doc
<以太网通信模块常见问题集>下载: 
http://www.ad.siemens.com.cn/download/docMessage.aspx?id=4126
《CP343-1 快速诊断指南》下载:
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=6647&loginID=&srno=&sendtime=

提问者对于答案的评价:
谢谢!问题已解决,经多次试验测试得出以下初步结果:
发送数组:
一、 数组元素类型为BYTE :
1. 发送缓冲区宽度=接收缓冲区宽度>=240 BYTE,否则程序ERROR
2. 数据块宽度=缓冲区宽度,否则,程序ERROR
3. FC5中,LEN若不等于发送缓冲区宽度,则数据循环发送,接收区以堆栈形式吞吐数据(z.B. 缓冲区宽度为240BYTE,LEN值为7,则接收数据块数据变化紊乱,具体见程序arr)。

二、 数组元素类型为BOOL:
1. 发送缓冲区宽度与接收缓冲区宽度可以不同,程序运行成功,但是数据接收同“一、3.”(z.B. 发送缓冲区宽度为2 BYTE,接收缓冲区宽度为1 BYTE,则接收数据块每次接收8位,分两次接收)
2. 数据块宽度与缓冲区宽度可以不同(z.B. 缓冲区宽度为8位,数据块宽度为3位,运行成功且数据不紊乱。)
3. 发送缓冲区宽度=LEN值。


注意:
1. 两个PLC中的OB35周期性中断时间应保持一致,否则出错。
2. 建议:在发送BYTE数组时,FC5和FC6的缓冲区数据宽度=LEN值=数据块宽度;发送BOOL数组时,发送缓冲区数据宽度=LEN值,接收数据块宽度=发送数据块宽度。

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc233604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午1:53
下一篇 2018年12月1日 下午1:53

相关推荐