Спасибо, всё работает))) Вложение 49535
Спасибо, всё работает))) Вложение 49535
Вообще-то HEX тут не причем, в панели время представлено в BCD формате, т.е в двоично-десятичном формате https://ru.wikipedia.org/wiki/%D0%94...BA%D0%BE%D0%B4
Байт, представленный в формате BCD, содержит числа от 0 до 99. Каждый десятичный знак занимает 4 бита. Биты 4-7 содержат первую цифру - число десятков, биты 0-3 содержат вторую цифру - число единиц. Формат BCD подобен шестнадцатеричному представлению с ограничением диапазона чисел 0..99 вместо 0.. FF.
Например: Преобразуем число 51 в BCD формат. 5 - это двоичное 0101, 1 - это 0001. В результате получается байт 0101_0001.
Для дисплея в панели используется формат HEX потому, что цифры от 0 до 9 для каждой тетрады BCD совпадают с HEX
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
В одну строчку перевести отдельно секунды, минуты и часы из системы "HEX" (BCD) в систему DEC
Используем ф-цию BCD_TO_INT из библиотеки Util
Вложение 49545Код:PROGRAM PLC_PRG VAR hasHEX: INT:=18; minHEX: INT:= 86; sekHEX:INT:=89; hasDEC: INT; minDEC: INT; sekDEC: INT; END_VAR hasDEC:= BCD_TO_INT(INT_TO_BYTE(hasHEX)); minDEC:= BCD_TO_INT(INT_TO_BYTE(minHEX)); sekDEC:= BCD_TO_INT(INT_TO_BYTE(sekHEX));
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Доброго дня. Пытаюсь настроить обмен данными между ПК-клиентом и ПЛК-сервером через модем ПМ01. В инструкциях и примерах в модуль "Modem" модуля "Modbus(slave)" добавляется PPP_Driver. А для ПЛК 110-30-P-M такой опции нет. Пробовал другую платформу (например, ПЛК 100) - там есть.
Здравствуйте!
Разрешите уточнить момент. Необходимо сравнить значения которые могут быть тип WORD, IN, REAL.
Пример: сравниваем данные типа WORD? как правильно сделать первым или вторым способом.
VAR
in1:WORD;
in2:WORD:=0;
---------------
(* 1 *)
IF in1 = in2 THEN
(* 2 *)
IF (in1 = 0) THEN
Просто меня волнует как правильно! Склоняюсь что 2 вариант правильный, хотя компилятор кушает оба варианта.
Круглые (операторные) скобки нужны для обозначения приоритета во множестве. У Вас всего одно сравнение, поэтому оно и так имеет наивысший приоритет, в связи с этим оба варианта правильно, а второй избыточен
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
https://owen.ru/product/pm01/example посмотрите примеры. Для ПЛК110 М02 выход в интернет осуществляется по-другому.
Добрый вечер.
Для компилятора не критично сравнивать различные числовые типы данных, например число в WORD и INT.
Он их вроде сравнивает, но не является ли это косячком?
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран