程序中,在通讯设置中,设置了IS0_on_TCP的连接方式,LADDR 的地址分别是PLC1
——W#16#0120 和 PLC2——W#16#0140,ID是1 。两个PLC程序块中也分别添加了SFC58 和 SFC 59
PLC1中的程序段如下:
CALL "AG_SEND"
![FC5和FC6使用问题 fc问题](http://img.aihuau.com/images/01111101/01011552t01c1e1e3955b5920d1.jpg)
ACT :="T100MS"
ID :=1
LADDR :=W#16#140
SEND :=P#DB20.DBX0.0 BYTE 12
LEN :=12
DONE :=#Send_Done1
ERROR :=#Send_Error1
STATUS:=#Send_Status1
CALL "AG_RECV"
ID :=1
LADDR :=W#16#140
RECV :=P#DB20.DBX12.0 BYTE 4
NDR :=#Rev_NDR1 //new data received
ERROR :=#Rev_Error2
STATUS:=#Rev_Status2
LEN :=#Rev_Len
PLC2中的程序段如下:
CALL "AG_SEND"
ACT :="T100MS"
ID :=1
LADDR :=W#16#120
SEND :=P#DB20.DBX12.0 BYTE 4
LEN :=4
DONE :=#Send_Done1
ERROR :=#Send_Error1
STATUS:=#Send_Status1
CALL "AG_RECV"
ID :=1
LADDR :=W#16#120
RECV :=P#DB20.DBX0.0 BYTE 12
NDR :=#Rev_NDR1 //new data received
ERROR :=#Rev_Error2
STATUS:=#Rev_Status2
LEN :=#Rev_Len
编程思路:
两个PLC通讯的DB块都是DB20(在FB20中调用的FC5和FC6,接收和发送的数据全部在背景数据块DB20中),只是把PLC1中DB20前12个BYTE 发送到PLC2中DB20的前12个BYTE,PLC1中DB20后4个BYTE 接收来自PLC2中DB20的后4个BYTE。
反之只是把PLC2中DB20前12个BYTE 接收到PLC1中DB20的前12个BYTE , PLC2中DB20后4个BYTE 发送到PLC2中DB20的后4个BYTE