Связь со мной: 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
Чтобы в V3.5 работало корректно - надо использовать другой подход к комментариям:
Код:{attribute 'qualified_only'} // Комментарий 1 VAR_GLOBAL // Комментарий 2 w_PLC_DI_LeftSide AT %IW0: WORD; // Комментарий 3 xSON_TS AT %IX0.1: BOOL; // Комментарий 4 xSOF_TS AT %IX0.1: BOOL; END_VAR
Связь со мной: 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
Связь со мной: 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
Другой подход для кириллицы тоже не катит. Потратил только время. Компилятору все равно как оформлен комментарий. Ему однозначно не нравится кириллица или то как он ее считывает
PHP код:
// Kommentarij khot' kakoj, l'sh' by ne russkij
// Kommentarij khot' kakoj, l'sh' by ne russkij
w_PLC_DI_LeftSide AT %IW0: WORD;
// Kommentarij khot' kakoj, l'sh' by ne russkij
xSON_TS AT %IX0.1: BOOL;
// Kommentarij khot' kakoj, l'sh' by ne russkij
xSOF_TS AT %IX1.2: BOOL;
// Kommentarij khot' kakoj, l'sh' by ne russkij
w_PLC_DI_RightSide AT %IW1: WORD;
Связь со мной: 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
Проблема оказалась в кодировке КИРИЛЛИЦЫ. Нужна UTF-8. По крайней мере на неё перекодировал. Виды комментариев работают оба. Спасибо Евгению Кислову за терпение.
При обмене ПЛК210-01-CS с MOXA nPort 5130A сыпятся ошибки. При этом с модулями МВ210-101 связь стабильная, без ошибок.
В дереве
вопрос7.png
возле "MOXA NPort" циклически меняются значки ош1.png -> ош2.png -> ош3.png. При этом счётчик Error Counter постоянно увеличивается, хотя данные от устройства, подключенного к nPort по RS485 Modbus RTU передаются в ПЛК, но не долго. Через несколько дней (~3...4 дня) обмен прекращается. Не пойму, что не так.
Вот код подключения к nPort и опроса удалённого устройства:
Объявления:
Программа:TCP_MOXA : OCL.TCP_Client; // ФБ подключения к MOXA NPort 5130A по TCP/IP
timertcp : TON;
MB_US800_4_AI1 : OCL.MB_TcpRequest; // ФБ опроса расходомера (канал №1) по MODBUS RTU over TCP
awAI1 : ARRAY [1..4] OF WORD; // регистры канала №1, считанные из расходомера
При подключении видно, что у MOXA_NPort выход xBusy постоянно TRUE, а, судя по не запускающемуся таймеру timertcp, выход xDone у MOXA_NPort постоянно FALSE:(* MOXA NPort 5130A *)
TCP_MOXA(xEnable := NOT timertcp.Q, sIpAddr := '192.168.128.37', uiPort := 4001, tTimeout:=T#500MS);
IF TCP_MOXA.xDone OR TCP_MOXA.xError THEN
TCP_MOXA.xEnable := FALSE;
END_IF;
timertcp(IN := (TCP_MOXA.xDone OR TCP_MOXA.xError) AND NOT timertcp.Q, PT:= T#1S);
(* опрос расходомера (канал №1) *)
MB_US800_4_AI1(
xExecute := TCP_MOXA.xActive,
hConnection := TCP_MOXA.hConnection,
tTimeout := T#100MS, // Время ожидания ответа
xIsRtuOverTcpMode := TRUE, // Протокол MODBUS RTU over TCP
usiUnitId := 4, // Адрес устройства в сети RS485
eFuncCode := 16#03, // Функция MODBUS RTU
uiDataAddr := 16#200, // Начальный обрабатываемый регистр
uiDataCount := 4, // Количество обрабатываемых регистров
pData := ADR(awAI1),
szSize := SIZEOF(awAI1)
);
IF MB_US800_4_AI1.xDone OR MB_US800_4_AI1.xError THEN
MB_US800_4_AI1(xExecute := FALSE); // После выполнения блока, его надо сбросить
GVL.voc2a_F_fwd := WORD2_TO_REAL(awAI1[1], awAI1[2]); // Читаем Параметр1
GVL.voc2a_Fs_fwd := WORD2_TO_UDINT(awAI1[3], awAI1[4]); // Читаем Параметр2
END_IF;
вопрос7_1.png
Нормально ли это? Я предполагал, что после каждого успешного выполнения xDone должен переключаться в TRUE или после неуспешного выполнения xError должен переключаться в TRUE.
Последний раз редактировалось askaev; 04.06.2024 в 09:03.
Добрый день.
1.
Поясните, пожалуйста, для чего добавляете NPort как устройство в дереве проекта, если уже работаете через библиотеку?
Если Вам требуется реализовать Modbus RTU over TCP, то следует оставить только код.
2.
Попробуйте для теста оставить статически .xEnable := TRUE в строке вызова блока TCP_MOXA.
См. пример на стр. 166 документа: https://ftp.owen.ru/CoDeSys3/11_Docu...odbus_v3.2.pdf