СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Коллеги я очень извеняюсь за наглость...но прошу помочь разобраться...
fbTon1(IN :=TRUE, PT := T#5S);//(IN должно становится TRUE после выполнения всего вложеного кода ,НО становится TRUE сразу
fbr_trig(CLK:=fbTon1.Q);
IF fbr_trig.Q THEN
fbTon1(IN :=FALSE);
EnablreadWrite:=TRUE;// отсчитали 5 сек разрешили чтение запись по МОДБУС(пока реализовано только чтение)
END_IF;
IF EnablreadWrite THEN
CASE eState OF
STATE_MB_WR.CHECK:
IF WriteCount = 167 THEN// если прошли все 167 итераций сбрасываем счетчик на ноль ,запрещаем работу по МОДБУС
WriteCount := 0;//но почему то не сбрасывается
EnablreadWrite:=FALSE;
fbTon1(IN :=TRUE);//fbTon1 IN должно становится TRUE только после выполнения 167 интераций ,НО становится TRUE сразу
eState := STATE_MB_WR.CHECK;
END_IF
WriteCount := WriteCount + 1;
eState := STATE_MB_WR.CONNECTING;
STATE_MB_WR.CONNECTING:
fbTon(IN :=TRUE, PT := T#500MS);
fbr_trig1(CLK:=fbTon.Q);
IF fbr_trig1.Q THEN
fbTon(IN :=FALSE);
fbTcpClient
(
xEnable := TRUE ,
tTimeout := T#5S,
sIpAddr := GVL.FancoilControl.IpAdressNom[WriteCount],
uiPort :=502
);
ConnectOk[1]:= fbTcpClient.xActive;
IF fbTcpClient.xActive THEN
fbWriteRequest (xExecute := TRUE);
eState := STATE_MB_WR.WRITE;
ELSIF fbTcpClient.xError THEN
fbTcpClient(xEnable := FALSE);
eState := STATE_MB_WR.CONNECTING;
END_IF
END_IF
STATE_MB_WR.WRITE:
fbWriteRequest
(
xExecute :=TRUE,
tTimeout :=T#1500MS,
usiRetry :=5,
hConnection := fbTcpClient.hConnection,
xIsRtuOverTcpMode :=FALSE,
usiUnitId :=1,
eFuncCode :=OCL.MB_FC.READ_INPUT_REGISTERS,
uiDataAddr:=((GVL.FancoilControl.FanAdr[WriteCount])*32)+15, // Начальный регистр
uiDataCount:=2,// колво регистров в запросе
pData:=ADR (awReadData),
szSize:=SIZEOF (awReadData)
);
ReadError[WriteCount,1]:=awReadData[0];
ReadError[WriteCount,2]:=awReadData[1];
IF fbWriteRequest.xDone OR fbWriteRequest.xError THEN
fbWriteRequest (xExecute := FALSE);
ErrorWr:=fbWriteRequest.eError;
fbTcpClient(xEnable := FALSE);
eState := STATE_MB_WR.CHECK;
END_IF
END_CASE
END_IF
есть кусок кода,который должен раз в пять сек ( пока что для отладки ) производить запись чтение по MODBUS....в итоге ...чтение происходит только после сброса программы ,выполняються все 166 шагов...
таймер fbTon1 начинает считать сразу хотя должен запустится только после 166 интереаций ( пометил в коментах)
Обратите внимание на первую строку вашего фрагмента кода.таймер fbTon1 начинает считать сразу хотя должен запустится только после 166 интереаций ( пометил в коментах)
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
так ладно...фиг с ним с таймером ,почему не происходит второе выполнения кода после строк IF EnablreadWrite THEN CASE eState OF и почему не срабатывает IF WriteCount = 167 THEN WriteCount := 0; ?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk