Я отредактировал свой пост выше, ответьте про галочку, пожалуйста.
Со стороны CDS логов нет. Нужно прослушивать линию связи (например, подключить к порту АС4 и запустить какую-нибудь программу-терминал)
Я отредактировал свой пост выше, ответьте про галочку, пожалуйста.
Со стороны CDS логов нет. Нужно прослушивать линию связи (например, подключить к порту АС4 и запустить какую-нибудь программу-терминал)
Связь со мной: 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
Галочку надо снять. Если она стоит, то после 2000 мс (или другого указанного значения) без получения команд от мастера - контроллер обнуляет значения регистров.
Связь со мной: 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
Евгений Кислов
Наверное последний вопрос, и самый каверзный - про REAL.
Сделал UNION как в мануале:
Соответственно, в Модбас смотрят переменные типа:TYPE Real2Word :
UNION
Value:REAL;
WordArray:ARRAY [0..1] OF WORD;
END_UNION
END_TYPE
Application.System.Regulators.P.Value.WordArray[0]
Application.System.Regulators.P.Value.WordArray[1]
В скаде при чтении отображаются корректные значения, как в CDS, если это две двухбайтовых переменных, то есть для значения "100" будет:
Байт 0 = 0
Байт 1 = 17096
Но если я делаю в скаде одно четырехбайтовое значение float, то получаю ерунду.
Понятно, что это проблемы скады, и тем не менее, мне нужно в документации дать таблицу адресов, как все это корректно указать?
Аналогично с записью REAL, для значения "100" просто пишет в нулевой байт 100, в первый не пишет ничего - это для 2*ushort.
Для 1*float путает байты:
Байт 0 = 17096
Байт 1 = 0
Если изменить порядок следования, то в пишет в Байт 0 ерунду.
Для начала попробуйте поменять Application.System.Regulators.P.Value.WordArray[0] и Application.System.Regulators.P.Value.WordArray[1] местами.
Т.е.
Application.System.Regulators.P.Value.WordArray[1]
Application.System.Regulators.P.Value.WordArray[0]
Если это не поможет - то, возможно, для вашей SCADA надо менять местами не регистры (WORD), а байты (BYTE).
Самый простой способ определить правильный порядок - записываете из SCADA в СПК значение типа REAL (например, 11.22). Смотрите, какой у него порядок байт.
После этого объявляете два экземпляра UNION.
В одном из них задаете REAL, и копируете байты из него в другой UNION, при этом меняя их порядок на тот, который нужен SCADA. После этого привязываете к регистрам слэйва WORD из второго UNION.Код:TYPE Real2SCADA : UNION Value:REAL ByteArray:ARRAY [0..3] OF BYTE; Modbus: ARRAY [0..1] OF WORD; END_UNION END_TYPE
Последний раз редактировалось Евгений Кислов; 22.05.2018 в 07:03.
Связь со мной: 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 порту на СПК207 подключено несколько слейвов(блок управления кранами). А вопрос у меня следующего плана, как исключить такой модуль из опроса, если один из них вышел из строя?
Связь со мной: 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
Тогда можно в настройках ПЛК (компонент Device) поставить галочку Enable Diagnosis for device.
PLC_Settings.png
После этого в коде программы можно отключить опрос устройства следующим образом:
где Modbus_Slave_COM_Port - имя нужного slave-устройства в дереве проекта.Modbus_Slave_COM_Port.Enable := FALSE;
Для возобновления опроса, соответственно, нужно присвоить переменной значение TRUE.
Последний раз редактировалось Евгений Кислов; 25.04.2019 в 07:44.
Связь со мной: 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