CP模块(Communication Processor,比如:CP343-1/Cp443-1)安装完成后,还需要对其进行组态和编程才能实现以太网通信。今天这篇文章,我们来聊聊西门子S7-300/400系列PLC提供的基于CP模块的以太网通信的编程接口(FCs)。
S7-300/400系列PLC总共提供了6个用于CP模块(Communication Processor)以太网通信的功能(FC),请看下面这张表格:
对于S7-300系列PLC而言,可以使用AG_SEND(FC5)发送数据,使用AG_RECV(FC6)接收数据,每次最多可以发送或接收8192个字节的数据;对于S7-400系列PLC而言,上述六个功能均可以使用,但是发送/接收的字节数有所不同:AG_SEND/AG_RECV在S7-400中每次最多只能发送/接收240个字节(是的,240 bytes,你没看错);如果你需要传输的数据量比较大,可以使用AG_LSEND/AG_LRECV(字母“L”表示“Large”),每次最多可以发送/接收8192个字节的数据;而功能AG_SSEND/AG_SRECV经过特殊的优化,可以在CPU和CP模块之间快速传送较大量的数据,其每次最多可以发送/接收1452个字节的数据;
下面这张表格总结了各发送/接收功能(FCs)在不同的CPU环境及不同的通信协议下所支持的单次最大传输的字节数:
需要说明的是:在S7-400中,AG_RECV不能用于接收TCP协议的数据,要使用AG_LRECV或者AG_SRECV。
以上是对CP模块的以太网通信各功能模块的总结,接下来我们看看如何在博途环境中使用这些功能(FCs):
首先,在博途的指令列表中找到“通信(Communication)”-“通信处理器(Communication Processor)”-“Simatic NET CP”,在其目录中可以看到“AG_SEND”和“AG_RECV”(例程中组态的CPU是319F),如下图:
通信的编程需要拖动相应的功能到程序块中,然后对其参数进行赋值。我们先来看看AG_SEND的参数列表:
当参数“ACT”的值为1时开始发送数据,发送的长度在参数“LEN”中定义(注意:不同的CPU和协议长度有所不同,参考本文前面的描述);“ID”和“LADDR”来自硬件组态;要发送的内容以指针的形式给“SEND”赋值;发送完成后“DONE”的值变为1;参数“ERROR”用来表示发送过程是否有错误发生;参数“STATUS”表示当前发送的状态;
同样的,接收功能(AG_RECV)也有一个参数列表,如下图:
“ID”和“LADDR”来自于硬件组态;“RECV”是接收数据的地址(通常是指向DB块的指针);“NDR”是英文“New Data Received”的缩写,其值为1时表示接收到了新的数据;“ERROR”用来标识接收过程中是否有错误发生(1=有错误发生);“STATUS”是接收的状态;“LEN”表示实际接收的数据的长度(以字节为单位);
好了,关于CP模块的以太网通信接口功能(FCs)就先介绍到这里了。相关参考文章:
西门子以太网模块CP343-1和CP343-1 Lean有什么区别?
欢迎扫码关注我们。
发表评论
能不能讲一下cp的opc通讯啊,为什么opc不用编写通讯程序,PLC与PC的opc通讯在PC侧要进行怎样的配置啊?