Если есть специалисты, помогите разобраться.
Программирую связь с между контроллерами по протоколу S7 при передаче блока данных возникает ошибка, статусное слово содержит код 3(R_ID неизвестен в соединении, задаваемом ID, или еще не был вызван блок для приема. (R_ID is unknown on the connection specified by the ID or the receive block
has not yet been called.)
Ниже привожу код функций на приемной и передающей стороне:
Код:
|
//ПРинимаем данные (вызывается в OB1)
CALL FB 13 , DB302
EN_R :=TRUE
ID :=W#16#5
R_ID :=DW#16#1
NDR :=#SSO1_data_ready
ERROR :=#SSO1_Error
STATUS:=#SSO1_Status
RD_1 :=P#DB5.DBX2000.0 BYTE 464
LEN :=#getLen
A #SSO1_data_ready
JCN sso1 //Если данные еще не готовы идем дальше
CALL "BLKMOV"
SRCBLK :=P#DB5.DBX2000.0 BYTE 464
RET_VAL:=#BLKCOPY_Error
DSTBLK :=P#DB21.DBX0.0 BYTE 464 //копируем в инф. массив ССО
sso1: NOP 0
//Передаем данные (вызывается в OB1, "ПУ1 передать" и "ПУ1 начать передачу" задаются в OB32 1 раз в секунду)
A "ПУ1 передать"
JCN end1 //если передавать не надо выходим
//Задаем длину массива данных для передачи
L 464
T #sendLen
//Передаем на ПУ1
CALL "BSEND" , DB300
REQ :="ПУ1 начать передачу"
R :=
ID :=W#16#1
R_ID :=DW#16#1
DONE :=#PU1_SendDone
ERROR :=#PU1_Error
STATUS:=#PU1_Status
SD_1 :=P#DB21.DBX0.0 BYTE 464
LEN :=#sendLen
//Сбросим флаг ПУ1 передать
SET
R "ПУ1 начать передачу"
//Если все передали или возникла ошибка сбросим флаг "ПУ1 передать"
A #PU1_SendDone
O #PU1_Error
R "ПУ1 передать"
end1: NOP 0 |
В чем может быть проблема?