Просмотр полной версии : Обмен между панелью оператора ONI и ПЛК 160М
Виктор74
05.06.2024, 19:49
Здравствуйте. Нужно считать данные (уставки регуляторов) из панели ONI в ПЛК 160М (ПЛК слейв по ТСР). Алгоритм в ПЛК состоит из нескольких POU (программ), вызываемых по очереди. В панели для каждой программы есть окна вода уставок. Прикол состоит в том, что при идентичных настройках (проверял не однократно, но может быть что то все таки упустил) для одной программы уставки читаются корректно, для других - не корректно. Типы данных в конфигурации ПЛК и в панели одинаковые. Регистры не попутаны (если данные не вводить - значение переменных 0, после ввода -число в минус 40 степени).
И еще вопрос (извиняюсь если не по теме). Как сделать читаемые уставки энергонезависимыми? В каждом POU читаемые из панели переменные нужно объявлять входными (т.е. VAR_INPUT), т.е. внутри POU VAR RETAIN их уже не объявить. В документации прочитал, что переменные, передаваемые через модуль слейв энергонезависимы (что в моем случае имеет место). Но после выключения/включения питания ПЛК все обнуляется.
kondor3000
05.06.2024, 21:21
Здравствуйте. Нужно считать данные (уставки регуляторов) из панели ONI в ПЛК 160М (ПЛК слейв по ТСР). Алгоритм в ПЛК состоит из нескольких POU (программ), вызываемых по очереди. В панели для каждой программы есть окна вода уставок. Прикол состоит в том, что при идентичных настройках (проверял не однократно, но может быть что то все таки упустил) для одной программы уставки читаются корректно, для других - не корректно. Типы данных в конфигурации ПЛК и в панели одинаковые. Регистры не попутаны (если данные не вводить - значение переменных 0, после ввода -число в минус 40 степени).
И еще вопрос (извиняюсь если не по теме). Как сделать читаемые уставки энергонезависимыми? В каждом POU читаемые из панели переменные нужно объявлять входными (т.е. VAR_INPUT), т.е. внутри POU VAR RETAIN их уже не объявить. В документации прочитал, что переменные, передаваемые через модуль слейв энергонезависимы (что в моем случае имеет место). Но после выключения/включения питания ПЛК все обнуляется.
Проще было выложить проекты, в расширенных настройках, добавить файлы. Скрины тоже не помешают.
Если у вас REAL -число в минус 40 степени, значит либо переставлены регистры (байты), либо не правильный адрес. В ПЛК слейве все переменные REAL должны быть с чётными адресами, если с нечётными, то выравниванием будут смещены на чётные, возможно в этом дело.
Так же в панели, регистры могут иметь смещение +1 к адресу регистров ПЛК, надо проверить. Например 0 и 1 регистр в ПЛК слейве делаете целыми, а 2,4,6 - делаете REAL.
Сначала проверяете как читаются целые и по какому адресу (есть ли смещение). Далее проверяете правильность передачи REAL.
Если целые правильно, а REAL нет, значит переставляете регистры в панели.
Если уставки затираются, значит они у вас не только читаются, но и записываются. Проверьте программу, уберите запись, либо копируйте считанное в другие регистры.
Так же уставки можно хранить в энергонезависимой памяти панели и при включении считывать в регистры обмена.
Виктор74
06.06.2024, 09:52
Да, я понял в чем дело. Действительно, некоторые переменные типа REAL в нечетных регистрах. Но как это исправить? При конфигурировании ПЛК нумеровал регистры, но как сейчас проверить, в каком именно регистре находится переменная? Выкладываю алгоритм. С сушилкой 2 и 3 все нормально, проблемы начинаются с сушилкой 4, видимо в этом месте конфигурации перепутал.
Да, я понял в чем дело. Действительно, некоторые переменные типа REAL в нечетных регистрах. Но как это исправить? При конфигурировании ПЛК нумеровал регистры, но как сейчас проверить, в каком именно регистре находится переменная? Выкладываю алгоритм. С сушилкой 2 и 3 все нормально, проблемы начинаются с сушилкой 4, видимо в этом месте конфигурации перепутал.
Вот сюда
76318
добавьте ещё 2 переменных "8 bits". (Float занимает места, как 4шт "8 bit" - поэтому перед Float переменные "8 bit" надо ставить кратно 4шт)
kondor3000
06.06.2024, 13:29
Да, я понял в чем дело. Действительно, некоторые переменные типа REAL в нечетных регистрах. Но как это исправить? При конфигурировании ПЛК нумеровал регистры, но как сейчас проверить, в каком именно регистре находится переменная? Выкладываю алгоритм. С сушилкой 2 и 3 все нормально, проблемы начинаются с сушилкой 4, видимо в этом месте конфигурации перепутал.
Можно вставить 2 шт. 8 BIT или 1 шт. 2 BYTE, это сместит все адреса на 1 регистр. REAL начнётся со 114 адреса.
Для вставки, надо скопировать 8 BIT и вставить 2 раза перед REAL с адресом 113, используя ПКМ .
Можно и ничего не вставлять, но REAL всё равно будет с адресом 114, об этом надо помнить, проставляя адреса в панели.
Виктор74
06.06.2024, 20:11
Спасибо за оперативные и полезные ответы. Конфигурацию переделал, все работает.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot