Значит, после добавления в проект библиотек ComService_3.1.0.compiled-library и Modbus(3.1.0).compiled-library, с последующей настройкой проекта как указано в пункте 5.4 мануала SPK_Modbus_v.1.1.pdf связь с аналоговыми модулями появилась.
Но только по порту COM2. При подключении модулей по порту COM3 опроса не происходит.
В чем может быть причина?
В общем виде код программы работы с модбасом выглядит так:
Код:
Код:
PROGRAM COM2
VAR
COM_Service_COM2: COM_SERVICE; // ФБ настройки и открытия порта COM2
MV110_8A: MB_RD_HOLD_REGS; // ФБ опроса модуля МВ110-8А
abyBuffer: ARRAY [0..255] OF BYTE; // Буфер ФБ опроса модуля МВ110-8А
abyMV110_8A_data: ARRAY [0..255] OF BYTE; // Буфер данных, считанных с модуля МВ110-8А
MV110_8A_1_InputsArr: ARRAY [0..7] OF REAL; // Показание входа модуля МВ110-8А
MV110_8A_1_InputsStatusArr: ARRAY [0..7] OF WORD; // Код ошибки измерения входа
MV110_8A_1_InputsStatusTextArr: ARRAY [0..7] OF WSTRING; // Cтатус измерения входа
_2WORD_TO_REAL: Word_Real; // Экземпляр объединия для преобразования двух WORD в REAL
InputsCounter: INT;
NumCurrModule: INT;
END_VAR
VAR CONSTANT
InputsShift: INT := 12; // Из мануала к модулю
EmptyRealInputsArr: ARRAY [0..7] OF REAL := [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
END_VAR
Значит, после добавления в проект библиотек ComService_3.1.0.compiled-library и Modbus(3.1.0).compiled-library, с последующей настройкой проекта как указано в пункте 5.4 мануала SPK_Modbus_v.1.1.pdf связь с аналоговыми модулями появилась.
Но только по порту COM2. При подключении модулей по порту COM3 опроса не происходит.
В чем может быть причина?
В общем виде код программы работы с модбасом выглядит так:
Код:
Код:
PROGRAM COM2
VAR
COM_Service_COM2: COM_SERVICE; // ФБ настройки и открытия порта COM2
MV110_8A: MB_RD_HOLD_REGS; // ФБ опроса модуля МВ110-8А
abyBuffer: ARRAY [0..255] OF BYTE; // Буфер ФБ опроса модуля МВ110-8А
abyMV110_8A_data: ARRAY [0..255] OF BYTE; // Буфер данных, считанных с модуля МВ110-8А
MV110_8A_1_InputsArr: ARRAY [0..7] OF REAL; // Показание входа модуля МВ110-8А
MV110_8A_1_InputsStatusArr: ARRAY [0..7] OF WORD; // Код ошибки измерения входа
MV110_8A_1_InputsStatusTextArr: ARRAY [0..7] OF WSTRING; // Cтатус измерения входа
_2WORD_TO_REAL: Word_Real; // Экземпляр объединия для преобразования двух WORD в REAL
InputsCounter: INT;
NumCurrModule: INT;
END_VAR
VAR CONSTANT
InputsShift: INT := 12; // Из мануала к модулю
EmptyRealInputsArr: ARRAY [0..7] OF REAL := [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
END_VAR
Вы портом COM2 называете тот, который на корпусе прибора гравируется как COM2 или тот, которому в CODESYS соответствует ID = 2?
На корпусе прибора.
При подключении модуля к порту с надписью на корпусе COM2, в программе я указываю ID=3.
При подключении модуля к порту с надписью на корпусе COM3, в программе я указываю ID=4
При подключении модуля к порту с надписью на корпусе COM2, в программе я указываю ID=3.
При подключении модуля к порту с надписью на корпусе COM3, в программе я указываю ID=4
Для тестирования вы используете один и тот же код, меняя в нем номер порта?
Для тестирования вы используете один и тот же код, меняя в нем номер порта?
Нет. В проекте две программы, обрабатываемые двумя своими задачами. Код в них одинаковый. За исключением номера порта.
Удалил из программы вообще обработку COM2. Оставил только одну программу. Меняю в ней ID с 3 на 4 и ничего не происходит. При ID=3 связь есть, при ID=4 отсутствует.
Но намек понял. Погляжу еще завтра с утра.
Последний раз редактировалось SatanaXIII; 07.05.2024 в 17:04.