PDA

Просмотр полной версии : Проблема отображение информации СМИ2



bugx
14.06.2015, 11:15
Имеется ПЛК simatic s7-1200 (1214c) с модулем RS485 (CB1241), он выступает как мастер. К нему подключено два устройства МСД-200 и СМИ2. С мсд200 проблем не возникло, он исправно принимает все данные и корректно все архивирует. Но вот отобразит информацию на СМИ2 мне так и не удалось. Пробовал подключится через ModbusTester, значение Read status и write status пишет illegal function. Через конфикуратор СМИ2 нормально подключается и параметрируется, вот только dev он отображает не SMI2, а два квадратика. Пробовал запустить мастер прошивки, который шел в комплекте с прибором, он ругается на несоответствие идентификатора: SMI2. Так же реагирует и мастер прошивки скаченный на сайте.

bugx
16.06.2015, 13:06
Видимо я не дождусь рекомендаций на форуме.

bugx
16.06.2015, 14:47
Был ответ от службы поддержки. Решение: сбой прошивки, необходимо перепрошивать устройство.

Мурат Ахриев
16.06.2015, 15:12
Добрый день!

Удалось ли решить проблему?
Если нет, опишите пожалуйста по шагам, действия которые вы предприняли для перепрошивки устройства.

Вай-Вай
01.04.2020, 11:42
Добрый день, имею проблему с выводом информации из CFC (Codesys 2.3 и 3.5) по 485му String_овой переменной на СМИ2, ПЛК с модулями ввода/вывода + СМИ2, таже песня и СПК с модулями ввода/вывода + СМИ2. программы под СПК и ПЛК написаны на CFC. как выйти из ситуации?

Евгений Кислов
01.04.2020, 11:47
Добрый день, имею проблему с выводом информации из CFC (Codesys 2.3 и 3.5) по 485му String_овой переменной на СМИ2, ПЛК с модулями ввода/вывода + СМИ2, таже песня и СПК с модулями ввода/вывода + СМИ2. программы под СПК и ПЛК написаны на CFC. как выйти из ситуации?

Добрый день.
Пожалуйста, подробно опишите проблему (приложив скриншоты, версии прошивок, проекты контроллеров и т.д.).

Вай-Вай
03.04.2020, 09:40
Добрый день, свою проблему решил.
Создал ФБ такого вида -


(* Конвертация оперативных параметров в масив байт*)
FUNCTION_BLOCK SMI2_OPERATIVE_DATA_TO_ARRAY
VAR_INPUT
sVar: STRING(4); (* Отображаемое значение типа STRING *)
END_VAR
VAR_OUTPUT
END_VAR
VAR
pabyOperativeData: POINTER TO ARRAY [0..3] OF BYTE; (* Указатель присваивает адрес входных переменных, длинна массива 4байта *)
Byte1: BYTE;
Byte2:BYTE;
Byte3:BYTE;
Byte4:BYTE;
END_VAR

Код блока -


(* Присваиваем значения входных переменных в массив Byte(1-4), для записи его в СМИ2. *)

pabyOperativeData:= ADR(sVar);
Byte1:= pabyOperativeData^[0];
Byte2:= pabyOperativeData^[1];
Byte3:= pabyOperativeData^[2];
Byte4:= pabyOperativeData^[3];

Sword1:=SHL(BYTE_TO_WORD(Byte1),8)+BYTE_TO_WORD(By te2); (* Sword1 грузим в регистр 29(1D) по modbus 485 *)
Sword2:=SHL(BYTE_TO_WORD(Byte3),8)+BYTE_TO_WORD(By te4); (* Sword2 грузим в регистр 30(1E) по modbus 485 *)


Работает как на 2.3 так и на 3.5, точками не занимался они в моем проекте не требуются. На мой взгляд очень простое решение, может кому будет полезно )))

Вай-Вай
06.04.2020, 09:04
Пробовал на прямую, стринг отправлять, модбас младший со старшим байтам местами меняет, и получается отправляю - "1234" а получаю - "2143". А если перестановку байт в настройках модбаса поменять то другие модули перестают отвечать.