1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Как задать выходное напряжение с точностью до десятых?

Ответить

Автор темы
Longi
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 02 дек 2019, 11:38
Имя: Михаил
Страна: Russian Federation
город/регион: Иваново

Как задать выходное напряжение с точностью до десятых?

Сообщение Longi »

Здравствуйте.
Начал изучать технологию АСУ ТП и в частности программирование под ПЛК Сименс. До этого (да и сейчас), программирую под ОС Андроид и микроконтроллеры STM32 (STM8) и AVR.
Установил TIA Portal, за пару вечеров разобрался в ней, понял, что куда писать и как правильно организовывать работу. Но вот все же есть небольшие пробелы, а именно:
Предположим мне нужно установить выходной сигнал равный 3.3 вольта, модуль расширения имеет 4 канала с дискретизацией 14 бит, то есть, выдать 3.3. вольта он должен спокойно. Но выдает он только целочисленное напряжение: 4 или 3 вольта.
Функция выглядит следующим образом:

Код: Выделить всё

IF "Button1" THEN
    "AnalogOutput1" := 3.3;
ELSE
    "AnalogOutput1" := 0;
    
END_IF; 

asuprog
здесь недавно
здесь недавно
Сообщения: 67
Зарегистрирован: 01 авг 2019, 02:24
Имя: Вячеслав
Благодарил (а): 9 раз
Поблагодарили: 6 раз

Как задать выходное напряжение с точностью до десятых?

Сообщение asuprog »

Longi писал(а): 21 фев 2020, 10:17

Код: Выделить всё

IF "Button1" THEN
    "AnalogOutput1" := 3.3;
ELSE
    "AnalogOutput1" := 0;
    
END_IF; 
Вы это где пишите? В редакторе SCL? Нужно в формате экспонента мантисса писать, можно попробовать явное преобразование типа DWORD_TO_FLOAT(3.3). Не уверен что это задокументированный вариант ) Возможно по другому преобразование будет выглядеть. Я пишу всегда с мантиссой и других вариантов не пробовал.

Автор темы
Longi
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 02 дек 2019, 11:38
Имя: Михаил
Страна: Russian Federation
город/регион: Иваново

Как задать выходное напряжение с точностью до десятых?

Сообщение Longi »

asuprog писал(а): 21 фев 2020, 12:26
Longi писал(а): 21 фев 2020, 10:17

Код: Выделить всё

IF "Button1" THEN
    "AnalogOutput1" := 3.3;
ELSE
    "AnalogOutput1" := 0;
    
END_IF; 
Вы это где пишите? В редакторе SCL? Нужно в формате экспонента мантисса писать, можно попробовать явное преобразование типа DWORD_TO_FLOAT(3.3). Не уверен что это задокументированный вариант ) Возможно по другому преобразование будет выглядеть. Я пишу всегда с мантиссой и других вариантов не пробовал.
Да, пишу именно в редакторе кода и такой вид мне более понятен, чем визуальный язык программирования.
По поводу явного преобразования типа уже пробовал, но напряжение именно целочисленное.

asuprog
здесь недавно
здесь недавно
Сообщения: 67
Зарегистрирован: 01 авг 2019, 02:24
Имя: Вячеслав
Благодарил (а): 9 раз
Поблагодарили: 6 раз

Как задать выходное напряжение с точностью до десятых?

Сообщение asuprog »

Longi писал(а): 21 фев 2020, 13:45 Да, пишу именно в редакторе кода и такой вид мне более понятен, чем визуальный язык программирования.
По поводу явного преобразования типа уже пробовал, но напряжение именно целочисленное.
В TIA не пробовал еще. Как то на первый взгляд немного по другому нежели в Step 7. полный код покажите.
С мантиссой попробуйте. Ваше 3.3 = 3.3Е0

PS Вот в Степе я 100% уверен, что 3.3 не пройдет. Возможно даже на этапе компиляции.

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Как задать выходное напряжение с точностью до десятых?

Сообщение v0v »

Я так понимаю Вам надо чтобы на выходе модуля аналогово выхода было напряжение 3,3V? В модуле по умолчанию обычно 0-10V. Можно воспользоваться библиотечным блоком в simatic FC106. Если нужно, чтобы напряжение на экран правильно выводилось, то надо с форматом чисел разобраться использовать с формат с плавующей запятой типа REAL.
Ответить

Вернуться в «Общие вопросы»