Прям в 10 раз больше???
Тоесть у вас особенный плк с памятью 1 310 720 кб?
мда....
Вид для печати
Сделайте обработку массивов по тому же фронту, что и запись в них. Нет необходимости выполнять ФБ в каждом цикле.
Я понял ошибку, спасибо всем. Получается тормозит не ПЛК, а я:)
ВАм бы еще флоат заменить на int, с нужным количеством знаков после запятой.
Или критично точность до большого числа знаков после запятой?
инт от -32т до +32т
самый левый бит в старшем байте (15) отвечает за знак.
и насчет стринг обрезать- это валенок очень правильно заметил.
Действительно есть некоторая путаница когда начинаешь работать с конфигурацией.
В конфигурации ПЛК word обозначает не целочисленное в положительной области, а размер - 2 байта.
То есть никто не помешает Вам завести переменную:
param_int : int AT% (адрес в конфигурации ПЛК переменной с размером word).
И все :)
Не надо через AT%. И так все будет работать
1. Заведите в конфигурации переменную 2 byte. Присвойте там же ей имя, например, HMI_PV1
Вложение 23815
2. Для элемента на экране панели задайте регистр управления с нужным адресом, в данном случае таким
Вложение 23816
тип данных д.б. Word
3. На вкладке вид задайте формат Dec, длину всего и длину дробной части, например, на дисплей будет выводится 5 знаков, три для целой части и два для дробной.
Вложение 23817
4. Значения, передаваемые на панель, нужно преобразовать из Real в INT. Только в начале нужно значение Real умножить на 10 в степени n, где n -число знаков после запятой, заданное в настройках дисплея панели.
Я использую для преобразования такую функцию
Теперь, если надо выводить на панель значения переменной My_Real, используем эту функциюКод:FUNCTION Real_TO_Panel : INT
VAR_INPUT
PV_Real: REAL; (*Заначение в формате Real*)
Nz_ai: INT; (*Положение точки(число знаков после запятой)*)
END_VAR
Real_TO_Panel:=REAL_TO_INT(PV_Real*EXPT(10,Nz_ai)) ;
HMI_PV1:=Real_TO_Panel(My_Real, 2);
где HMI_PV1 переменная 2 byte в конфигурации.
Вложение 23819
При этом не обращаем внимания, что в конфигурации переменная HMI_PV1 прописана как WORD
https://www.youtube.com/watch?v=LIXZNmI_rhI
Можете поиграться с этим примером
Спасибо petera! Попробую обязательно. А не знаете как перевести Time в реальное число милисекунд. Чтобы например 1 минута = 60000. Пробовал всяко разно , за минуту переваливает и неадыкватные значения вылетают.