Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
ок, будем пробовать..
Доброе утро!
ПЛК210. SP14. OwenCommunication, Float
Не выходит пока организовать нормальную IN_OUT или чтение/запись функцию.
В примере дано отдельно описание на чтение и отдельно запись.
И то и то хорошо работает, а вот когда я начинаю и читать и писать, имею проблемы
Пробовал разделить через BLINK по 200мс, то чтение, то запись. Работает, когда угадываю промежуток, но скажем так себе решение.
Пробовал сделать через блок с входами IN_OUT, выбивает в исключение иногда
Для чего вообще нужно: например SP(REAL) вы ее пишете как с панели, так можете записать в нее и из кода.IF OUT1_old<>OUT1 OR OUT2_old<>OUT2 THEN
IN:=OCL.WORD2_TO_REAL(awSlaveData[OUT1], awSlaveData[OUT2], FALSE);
END_IF;
IF IN_old<>IN THEN
FB (rInput :=IN, wOutput1 => awSlaveData[OUT2], wOutput2 => awSlaveData[OUT1]);
END_IF;
IN_old:=IN;
OUT1_old:=OUT1;
OUT2_old:=OUT2;
Регистры должны обновиться, а в случае изменения регистров, должна измениться связанная с ними переменная
В конфигураторе ПЛК110 переменные именно так и работают.
Как это сделать корректно в Codesys 3.5 SP14?
+79104444236
С уважением,
Лапшин Вячеслав
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Доброго дня )вопрос : не могу в документации найти..стандартный компонент Modbus TCP Master ( через дерево объектов) может содержать до 100 запросов....а сколько я могу вычитать за один запрос?
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Доброго времени Коллеги) итак : MB_TcpRequest отказывается работать (HANDLE_INVALID,10,Некорректное значение дескриптора интерфейса) хотя дескриптор получает от TcpClient....Через опс сервер ,проблем нет,если добавляю через дерево устройств как модбас слейв тоже читается без проблем...какаятофигня.png
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Вот весь "Код")) удалил все...
IF EnableRead THEN
CASE ReadState OF
STATE_MB_RD.CONNECTING:
fbTcpClient
(
xEnable := TRUE ,
tTimeout := T#5S,
sIpAddr := '192.168.0.7',
uiPort :=502
);
IF fbTcpClient.xActive THEN
fbReadRequest (xExecute := TRUE);
ReadState := STATE_MB_RD.READ;
ELSIF fbTcpClient.xError THEN
fbTcpClient(xEnable := FALSE);
ReadState := STATE_MB_RD.CONNECTING;
END_IF
STATE_MB_RD.READ:
fbReadRequest
(
xExecute:=TRUE,
tTimeout:=T#5S,
usiRetry:=5,
hConnection:=fbTcpClient.hConnection,
xIsRtuOverTcpMode:=FALSE,
usiUnitId:=1,
eFuncCode:=OCL.MB_FC.READ_INPUT_REGISTERS,
uiDataAddr:=1,
uiDataCount:=32,
pData:=ADR (DatafORFANK),
szSize:=SIZEOF (DatafORFANK)
);
EnableRead:=FALSE;
ReadState := STATE_MB_RD.CONNECTING;
END_CASE
END_IF
Поправил ошибки (выделил исправления жирным).
2021-08-19_7-58-40.pngКод:IF EnableRead THEN CASE ReadState OF STATE_MB_RD.CONNECTING: fbTcpClient ( xEnable := TRUE , tTimeout := T#5S, sIpAddr := '192.168.0.7', uiPort :=502 ); IF fbTcpClient.xActive THEN fbReadRequest (xExecute := FALSE); ReadState := STATE_MB_RD.READ; ELSIF fbTcpClient.xError THEN fbTcpClient(xEnable := FALSE); ReadState := STATE_MB_RD.CONNECTING; END_IF STATE_MB_RD.READ: fbReadRequest ( xExecute:=TRUE, tTimeout:=T#5S, usiRetry:=5, hConnection:=fbTcpClient.hConnection, xIsRtuOverTcpMode:=FALSE, usiUnitId:=1, eFuncCode:=OCL.MB_FC.READ_INPUT_REGISTERS, uiDataAddr:=1, uiDataCount:=32, pData:=ADR (DatafORFANK), szSize:=SIZEOF (DatafORFANK) ); IF fbReadRequest.xDone OR fbReadRequest.xError THEN EnableRead:=FALSE; ReadState := STATE_MB_RD.CONNECTING; END_IF END_CASE END_IF
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk