PDA

Просмотр полной версии : Работа с большими числами в CodeSys 3.5



ivan.v
24.11.2023, 12:27
Добрый день. Подскажите пожалуйста, не получается разобраться с математическими действиями при получении больших чисел. Изначально был смысл получить процент от числа. На скрине видно что формула работает не корректно. Смысл из 2001(может меняться от 0 до 3000) -11 %, требуется получить целое число - скорость ПЧ.

МихаилГл
24.11.2023, 12:32
С такой ёлкой вполне реально спутать форматы чисел в вашей программе...
Ещё были моменты, чтоб кодесис понял, что работает с реал переменными, числам надо добавить десятую, т.е. использовать не 88, а 88,0.
Переходите на st, не мучайте себя.

ivan.v
24.11.2023, 13:35
С такой ёлкой вполне реально спутать форматы чисел в вашей программе...
Ещё были моменты, чтоб кодесис понял, что работает с реал переменными, числам надо добавить десятую, т.е. использовать не 88, а 88,0.
Переходите на st, не мучайте себя.
На ST как это корректно сделать?

МихаилГл
24.11.2023, 14:02
Вы для начала определитесь, с какими числами вы работаете. У вас я смотрю регистры, modbus скорее всего. А это всегда word. Если хотите чтоб появились десятые, не забывайте ставить to-real а потом уже математические операции проделывайте. А вообще в кодесисе используют структуры...

МихаилГл
24.11.2023, 14:12
Точнее объединение...


TYPE DUT_MODBUS_Real_Word:
UNION
U_RealInModbus: ARRAY [0..1] OF WORD;
U_RealInProgramm: REAL;
END_UNION
END_TYPE


Кстати, дайте скрин с описанием переменных... Они у вас word, я так думаю...

Евгений Кислов
24.11.2023, 15:04
Добрый день. Подскажите пожалуйста, не получается разобраться с математическими действиями при получении больших чисел. Изначально был смысл получить процент от числа. На скрине видно что формула работает не корректно. Смысл из 2001(может меняться от 0 до 3000) -11 %, требуется получить целое число - скорость ПЧ.

Добрый день.
https://owen.ru/forum/showthread.php?t=28167&p=269333&viewfull=1#post269333

ivan.v
28.11.2023, 12:05
Вы для начала определитесь, с какими числами вы работаете. У вас я смотрю регистры, modbus скорее всего. А это всегда word. Если хотите чтоб появились десятые, не забывайте ставить to-real а потом уже математические операции проделывайте. А вообще в кодесисе используют структуры...

Добрый день. Спасибо большое, применил сразу к переменной преобразователь to_real, теперь все корректно считает. После сделал обратное преобразование в WORD