不需要在连接表中建立通信连接,而在程序中调用系统函数,在赋值参数时指定通信方的MPI地址。这种通信方式适合S7-300、400系列PLC之间的相互通信,PLC站可以不在同一个项目下,发送、接收可以通过程序控制,灵活性强,最大通信数据量为76B。与GD数据包通信方式相比,发送和接收程序带有确认信息。不需配置连接的通信方式占用CPU S7标准通信资源,CPU支持S7标准通信资源的数量与CPU型号有关,可以参考CPU订货手册。
不需配置连接的通信有两种通信方式:双边通信方式和单边通信方式。
1.双边通信方式
通信双方都需要调用通信函数,一方调用发送块,另一方就要调用接收块来接收数据,发送块是SFC65(X_SEND),接收块是SFC66(X_RCV),发送频率过高,将造成通信方没有响应,加重CPU的负荷,建议在OB35中调用发送块,间隔100ms发送一次,在OB1中编写接收块。发送的示例程序如下:
发送函数SFC65的参数含义:
REQ:触发发送请求,为1时发送。
CONT:为1表示发送数据完成后仍将占用S7标准通信资源,为0表示发送数据完成后释放S7标准通信资源,需要重新触发发送任务。
DEST_ID:接收方的MPI地址。
REQ_ID:数据包的标识符,用户定义。
SD:发送区,ANY指针格式,示例程序中的发送区为DB1中前76B。发送区最大为76B。
RET_VAL:表示发送任务的状态。
BUSY:为1表示通信正在执行,只有为0时,才能执行下一个发送任务。
示例程序中将DB1中前76B发送到MPI地址为4的CPU中,在通信方需要调用SFC66(X_RCV)接收数据,示例程序如下:
接收函数SFC66的参数含义:
EN_DT:为1表示激活接收功能。
RET_VAL:表示接收任务的状态。
REQ_ID:数据包的标识符,接收在发送函数“REQ_ID”中定义的标识符。多个站向一个站发送数据时,通过标识符识别发送方。
NDA:为1时表示接收到新的数据包,为0则没有,沿信号。(www.xing528.com)
RD:接收区,示例程序中将DB2中前76B定义为接收区。
小窍门:
如果通信数据超过76B,可以利用通信数据区分批次发送。
2.单边通信方式
单边通信只在一方编写通信程序,类似客户机与服务器的关系,在客户机上调用相应通信函数对服务器中数据进行读写操作。这种通信方式适合S7-300/400/200系列PLC之间通信,S7-300/400系列PLC CPU可以同时作为客户机和服务器,S7-200系列PLC只能作为数据的服务器(不能调用通信函数)。SFC67(X_GET)用来读服务器中的数据并存储于本地的数据区中,SFC68(X_PUT)用来将本地数据区的数据写到服务器中指定的数据区中。
调用SFC67(X_GET)示例程序如下:
通信函数SFC67的参数含义:
REQ:触发通信任务,为1时任务执行。
CONT:为1表示执行通信任务后仍将占用S7标准通信资源,为0表示执行完成后释放S7标准通信资源,需要重新触发通信任务。
DEST_ID:通信方的MPI地址。
VAR_ADDR:通信方的数据区。
RET_VAL:任务执行的状态。
BUSY:为1表示通信正在执行,只有为0时,才能执行下一个通信任务。
RD:本地数据接收区。
示例程序中将MPI地址为4的PLC站DB1中的前76B复制到本地数据DB2的前76B中。
调用SFC68(X_PUT)示例程序如下:
通信函数SFC68的参数含义与SFC67相似,这里不再介绍,示例程序中将本地数据区DB2的前76B中的数据写到MPI地址为4的PLC站MB100到MB175数据区中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。