Сделайте обработку массивов по тому же фронту, что и запись в них. Нет необходимости выполнять ФБ в каждом цикле.
Я понял ошибку, спасибо всем. Получается тормозит не ПЛК, а я
Не зная броду, не суйся в воду. (Пословица.)
Век живи, век учись(а умрешь дураком).
Опыт растет прямо пропорционально выведенному из строя оборудованию.
ВАм бы еще флоат заменить на int, с нужным количеством знаков после запятой.
Или критично точность до большого числа знаков после запятой?
Не зная броду, не суйся в воду. (Пословица.)
Век живи, век учись(а умрешь дураком).
Опыт растет прямо пропорционально выведенному из строя оборудованию.
инт от -32т до +32т
самый левый бит в старшем байте (15) отвечает за знак.
и насчет стринг обрезать- это валенок очень правильно заметил.
Последний раз редактировалось Пьер; 11.04.2016 в 10:27.
Не зная броду, не суйся в воду. (Пословица.)
Век живи, век учись(а умрешь дураком).
Опыт растет прямо пропорционально выведенному из строя оборудованию.
Действительно есть некоторая путаница когда начинаешь работать с конфигурацией.
В конфигурации ПЛК word обозначает не целочисленное в положительной области, а размер - 2 байта.
То есть никто не помешает Вам завести переменную:
param_int : int AT% (адрес в конфигурации ПЛК переменной с размером word).
И все
Не надо через AT%. И так все будет работать
1. Заведите в конфигурации переменную 2 byte. Присвойте там же ей имя, например, HMI_PV1
Захват-1.png
2. Для элемента на экране панели задайте регистр управления с нужным адресом, в данном случае таким
Захват-2.png
тип данных д.б. Word
3. На вкладке вид задайте формат Dec, длину всего и длину дробной части, например, на дисплей будет выводится 5 знаков, три для целой части и два для дробной.
Захват-3.png
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 в конфигурации.
Захват-4.png
При этом не обращаем внимания, что в конфигурации переменная HMI_PV1 прописана как WORD
Можете поиграться с этим примером
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Спасибо petera! Попробую обязательно. А не знаете как перевести Time в реальное число милисекунд. Чтобы например 1 минута = 60000. Пробовал всяко разно , за минуту переваливает и неадыкватные значения вылетают.
Не зная броду, не суйся в воду. (Пословица.)
Век живи, век учись(а умрешь дураком).
Опыт растет прямо пропорционально выведенному из строя оборудованию.