Связь со мной: 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 | Как правильно задавать вопросы | PRO32 Connect
Чтобы в 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 | Как правильно задавать вопросы | PRO32 Connect
Связь со мной: 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 | Как правильно задавать вопросы | PRO32 Connect
Другой подход для кириллицы тоже не катит. Потратил только время. Компилятору все равно как оформлен комментарий. Ему однозначно не нравится кириллица или то как он ее считывает
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 | Как правильно задавать вопросы | PRO32 Connect
Проблема оказалась в кодировке КИРИЛЛИЦЫ. Нужна 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