Так у вас в переменных по ходу регистры (байты) переставлены.
Вы шаблоном пользуйтесь, только отсебятину удалите.
Вид для печати
К стати в физических величинах (CEU) всегда 0 выдает
Ну правильно. Это программа управления установкой ТВЧ. У него нулевая точка вверху, индуктор опускается сначала быстро вниз до уставки 1, затем включает ТВЧ установку и спреер и медленно поднимает вверх до уставки 2, после чего быстро возвращается в ноль. Есть вариант программы где ноль внизу. Все зависит от обрабатываемой детали и как ее удобнее снимать из под индуктора или над индуктором. Соответственно когда идет индуктор вниз, то и значения отрицательные и уставок и текущего положения. Вот эту цифру мне и надо получить, потому что бывают детали где нужно на валу например закалить концы, а центр оставить незакаленным соответственно нужно 2 зоны калить и желательно за один проход и в автоматике. на данный момент такие детали калятся в ручном режиме.
У вас на скрине число -104 (65432), так как в ПР нет отрицательных чисел, надо использовать функции конвертации, где отрицательные передаются Доп. кодом,
например число -1 это 4294967295. Так как 2 регистра, то используйте не INT а DINT.
Функции FLOAT_TO_DINT и DINT_TO_FLOAT на ST____ https://owen.ru/forum/showthread.php...821#post429821
Наконец-то дело сдвинулось с мертвой точки. получил исходные данные, причем, как я опробовал, даже не обязательно оба байта считывать, достаточно только второго. вопрос сейчас в другом встал. Уставки с прибора считываются встроенной функцией и без лишних шаманских бубнов и функцией DINT_TO_FLOAT превращаются в текущие значения, а встроенная функция считывания параметра CEU не считывает вообще ни чего, хотя берет данные с тех же адресов. Ну да ладно, это я еще продолжу эксперименты в понедельник. Главное что уже есть хоть чтото и можно уже писать программу дальше. Спасибо за помощь!Вложение 90501
Только не второго байта, а второго регистра. Байт до 255, регистр до 65535, тип WORD (INT, UINT).
Если что есть реверсивный счётчик СИ130 https://owen.ru/product/si130
Разобрался почему параметр CEU не считывался. убрал считывание по регистрам с адресов 2 и 3 переменные Var1 Var2 вообще удалил, оставил только двухрегистровый опрос CEU и все заработало.
Теперь другой вопрос возник - как можно извне еще 2 промежуточные уставки задавать? в СИ30 их только две, а для моей задачи надо 4 (нижняя и верхняя граница термообработки нижнего края вала и еще 2 уставки верхней зоны термообработки? Я конечно сейчас сделаю это внутренними константами, но тогда каждый раз при переходе на другой тип вала придется и программу перезаливать каждый раз.
Было бы не плохо иметь какой ни будь задатчик, посредством которого оператор сам бы менял границы термообработки. Тем более что я счетчик коэффициентом подогнал чтобы он отображал значение позиции в милиметрах