我们遇到的问题是:315-2DP CPU带一个CP343-1模块(6GK7 343-1EX30-0XE0)通过Profinet IO网络与ET200S的IM151-3PN接口模块(6ES7 151-3AA23-0AB0)进行通信。通过资料得知需要调用FC11和FC12,调用后开关量DI和DO通信正常,但模拟量AI和AO无法正常通信。
我发现相关资料里关于通过CP343-1进行PROFinet通信都举例AI和AO的通信,而没有关于AI、AO的办法。
我在实验中在ET200S上分别配8DO(2号槽)、2AO(3号槽)、8DO(4号槽),建立DB11作为输出数据区,两边组态的地址无法实现AO模块地址的对应,所以无法实现AO通信。请问是什么原因?是否需要作其他设置?
问题补充:
请问阿鸣元老:我的主站上配的CP343-1,资料里都说必须调用FC11和FC12才能通讯,而且开关量也是通过FC11和FC12才通上的。如果选用PN系列的CPu的话就可以直接通信了。
图片说明:
最佳答案
下面是我个人理解,不到位请拍砖:
1、如果您要使用 S7-300 工业以太网模板作为 PROFINET IO 控制器或者 PROFINET IO 设备, 那么您必须调用一下通讯功能块在用户程序中:
FC11 "PNIO_SEND"
FC12 "PNIO_RECV"
2、如果你把CP以太网模块作为一个网络通讯模块,仅此用于连接通讯,不作为网络控制器。就是为了与其它厂家、分布式I/O系统或是上位机进行网络通讯,此时,你连接的ET200S,不需要使用FC11和FC12,可以直接像使用本地的I/O口一样实现控制。
提问者属于第一种情况,所以要调用FC11和FC12
3、在实验中在ET200S上分别配8DO(2号槽)、2AO(3号槽)、8DO(4号槽),建立DB11作为输出数据区,两边组态的地址无法实现AO模块地址的对应,所以无法实现AO通信。请问是什么原因?是否需要作其他设置?
首先,你的AO属于模拟量输出,那么发送接收缓冲区 (例如 数据块) 包含了被发送和接收的数据,长度至少要和被定义的发送和接收数据一样长。
重点检查你的数据接受定义的长度,是否满足。
其次,根据不能接受错误代码进行排除,对症下药。
你根据FC11.FC12功能相应的帮助文件,仔细检查。
下面是错误代码:
条件代码PNIO_RECV
NDR ERROR STATUS 含义
0 0 8180H ?激活数据接受;或?CP处于STOP模式。
0 0 8181H 模块不支持块版本2.0。解决方法: 使用块版本1.0。
1 0 0000H 无错接受新数据。
0 1 8183H ?缺少PROFINET IO组态;或 ?错误的CPLADDR;或 ?CP处于STOP模式。或 ?MODE互连与模块组态不匹配或使用MODE > 1错误互连。在设备模式中,也可能是:?ROFINET IO控制器和PROFINET IO设备之间的连接被中断。或?PROFINET IO控制器不可到达或?总长度(组态和LEN参数)不一致
0 1 8184H 系统错误或非法参数类型。
0 1 8185H 目标地址缓冲区(IOCS的RECV)太小。
0 1 8F22H 读取参数时发生区域长度错误(例如,DB太短)。
0 1 8F23H 写入参数时发生区域长度错误(例如,DB太短)。
提问者对于答案的评价:
xiexie
专家置评
参考西门子下载中心文档A0373。CP343-1作为 PROFINET IO 控制器的使用情况与CP342-5的使用方法非常类似。硬件配置中,模拟量的组态地址比较大,这样你使用FC11和FC12 从CP343-1中读取或写入足够的长度才能操作模拟量模块。具体也可参考CP342-5做主站的文档,A0139。
搂主补充说道使用集成PN口的CPU可以直接通信,既不用调用功能块,这点是对的,省去了CP卡和编程的工作。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc216021.html