北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章550 浏览8929509

基于CP模块的S7-300/400以太网接收/发送功能总结

CP模块(Communication Processor,比如:CP343-1/Cp443-1)安装完成后,还需要对其进行组态和编程才能实现以太网通信。今天这篇文章,我们来聊聊西门子S7-300/400系列PLC提供的基于CP模块的以太网通信的编程接口(FCs)。

cover.pngS7-300/400系列PLC总共提供了6个用于CP模块(Communication Processor)以太网通信的功能(FC),请看下面这张表格:

send_rcv1.png

对于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环境及不同的通信协议下所支持的单次最大传输的字节数:

send_rcv_bytes.png

需要说明的是:在S7-400中,AG_RECV不能用于接收TCP协议的数据,要使用AG_LRECV或者AG_SRECV。

以上是对CP模块的以太网通信各功能模块的总结,接下来我们看看如何在博途环境中使用这些功能(FCs):

首先,在博途的指令列表中找到“通信(Communication)”-“通信处理器(Communication Processor)”-“Simatic NET CP”,在其目录中可以看到“AG_SEND”和“AG_RECV”(例程中组态的CPU是319F),如下图:

FCs.png

通信的编程需要拖动相应的功能到程序块中,然后对其参数进行赋值。我们先来看看AG_SEND的参数列表:

AG_SEND_Parameter.png

当参数“ACT”的值为1时开始发送数据,发送的长度在参数“LEN”中定义(注意:不同的CPU和协议长度有所不同,参考本文前面的描述);“ID”和“LADDR”来自硬件组态;要发送的内容以指针的形式给“SEND”赋值;发送完成后“DONE”的值变为1;参数“ERROR”用来表示发送过程是否有错误发生;参数“STATUS”表示当前发送的状态;

同样的,接收功能(AG_RECV)也有一个参数列表,如下图:

AG_RECV_Parameter.png

“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侧要进行怎样的配置啊?