Партизан isvlad, выложите и старую и новую версииЦитата:
Залил старую версию программы...Всё заработало.
Вид для печати
Партизан isvlad, выложите и старую и новую версииЦитата:
Залил старую версию программы...Всё заработало.
Вот, что я обнаружил:
В архива 2 файла.
Первый - это таргет с прилагаемого к ПЛК диска. Установлен там, где проблем с MASTER нет.
Второй скачан с сайта OWEN и установлен там где были проблемы.
Версии файлов одинаковые, однако размеры существенно отличаются.
В этом наверное корень зла?
Может и в этом. Переустановите - проверите.
Прошу извинить. Таржеты волнуют только для связи с КДС
библиотека
Неделю бился с таким -же косяком (вместо мва-мдвв, вместо плк110-плк100). Позавчера победил путем вынесения в отдельную сеть езернет.
Как оказалось позже, на том-же адресе, что и плк висело другое tcp устройство (ip камеру враги повесили). Каким-то образом это убивало соединение по rs-485 именно в момент обновления программы. (коннект к мдвв поднимался, если обесточить плк минут на 20)
После устранения конфликта ип, и возврата в общую сеть, все работает нормально вторые сутки. (тьфу *3)
Добрый день. Подскажите можно ли с помощью панели ИП320 считать данные например с ТРМ 202 напрямую, без плк. Заранее благодарен. С уважением, Дмитрий.
Разобрался с подключением, спасибо. Возник ещё один вопрос. На ТРМ 202 есть возможность отображения сразу 2х параметров температуры, с 1 и 2 входа соответственно. Из инструкции к трм202 "Оперативные параметры индексируются через сетевой адрес. Например, ТРМ202 имеет два входа. Для считывания измеряемого значения с входа 1 следует прочитать значение параметра PV с сетевым адресом, заданным в параметре Addr, для считывания измеряемого значения с входа 2 – с сетевым адресом Addr +1", когда считываешь их прибором МСД200, проблем нет, например адрес ТРМа 20, для считывания ставишь 21 и всё. Теперь вопрос, как это реализовать на панели оператора ИП320? Заранее признателен за помощь.
ну а зачем тогда цитируете РЭ из раздела работы с протоколом ОВЕН?
скачайте http://www.owen.ru/uploads/ki_prm_trm202_033.pdf и смотрите какие адреса принадлежат второму каналу
Непонятность такова. Плк 150(мастер)+ип320(слев). 232. вывод с плк в конкретные биты через 8 bit otput module(допустим на лампочки в панели) происходит без проблем. если по действию нажатия кнопки "1" происходит запись в бит (лампочка привязанная к этому же биту показывает индакацию) то через 8 bit input module ничего не вижу. 100 раз проверял и номера битов, регистров. где зарылся таракан??кстати то же самое и с регистром, вывести могу, получить с панели в плк ну никак.
Вопрос висит долго. Меня именно подобная шняга заставила уйти на syslibcom. Я более чем доволен.
Но возможно какая-то простая фигня на уровне настроек.Если выложите оба проекта (ПЛК и ИП) - шансы разобраться будут выше.
По многочисленному просьбе :) выкладываю. я понимаю что где-то мелочь, но грабли всё равно есть. кстати добавлю про команды модбас, перепробовал тоже все, с 01 до 04
В принципе все нормально. Биты только в панели с 1, а в ПЛК с 0. Индикатор - ни к чему не привязан.
Оптимальней - 38400 + ИП320 страдает за каким-то плавающей задержкой ответа 20..50мс + иногда ей нужны за каким-то паузы перед запросами 30..50мс.Настраивать это в штатном мастере - гимор.То что данные уходят туда - это нормально, т.к. панель ловит запрос на запись (даже если через раз), ответ приходит коряво а Вы это не видите. И именно поэтому с чтением оттуда - фиговато.Polltime (от 200 ?) и framing time (?) -наверно могут помочь.
Ну и могут посоветовать (не я) - сделать панель мастером.
PS
Ввиду рояля в кустах.
8 inputs module : 0x02 - не катит. 0x01 или 0x03. (0x04 - заломало проверять).
А с просто регистрами - проблем нет.
Выше сказанное про время - видно невооруженным взглядом.
Спасибо. продолжим эксперименты. индакатор я просто могу зажигать когда работает плк, просто активируя 7 бит. а про ип в мастера не сильно хочу, потому что задача будет с кучей девайсов, и плк будет ими управлять. большое ещё раз спасибо. о результатах сообщу.
Здравствуйте, уважаемые форумчане.
Хочу задать вопрос, который, скорее всего, покажется вам очень примитивным. Но все таки...
При программировании контроллера ПЛК160 в CoDeSys возникла проблема: значения переменных на входах HIGH и LOW блока HYSTERESIS не сохраняются в памяти контроллера после отключения питания.
Переменные локальные, класс VAR RETAIN, тип INT, значение - целое число. Впрочем, посмотрите все сами, проект я прилагаю.
До отключения питания контроллера программа работает нормально, после снятия\восстановления питания перестает.
Может быть, еще есть какие-то косяки в программе, подскажите пожалуйста, я CoDeSys и ПЛК впервые увидел недели 2 назад...
Очень рассчитываю на вашу помощь!
На последнее сообщение можно не отвечать, сам догадался.
ой.простите.правда. для опыта ставил оутпут, которого в прикреплённом нету. и так же делал опыт когда индикатору присваивал один из битов привязанных к кнопке, а в кнопку добавлял реверс, дабы проверить происходит ли вообще запись в бит по событию, на уровне ип320 (в голове) происходит,а до плк не доходит
доброго времени суток. Подскажите пожалуйста логику работы ПЛК. Я понимаю, что он однозадачный, но всеже в упрощенном варианте при вызове ФБ ПЛК сначала заходит в экземпляр ФБ, выполняет его полностью и идет дальше по коду программы-родителя или как-то распределяет процессорное время создавая илюзию многозадачности, т.е. выполнил кусочек экземпляра ФБ, пошел дальше по коду родителя, в след. цикле еще кусочек и т.д.? Просто есть какая-то коллизия вот в этом куске кода:
RtB(f_in:=MIN_IN_PRESS); (*2B6_hex*)
HOLD[1388]:=RtB.byte_1;
HOLD[1389]:=RtB.byte_2;
HOLD[1390]:=RtB.byte_3;
HOLD[1391]:=RtB.byte_4;
RtB(f_in:=PRESS_ON); (*2BA_hex*)
HOLD[1396]:=RtB.byte_1;
HOLD[1397]:=RtB.byte_2;
HOLD[1398]:=RtB.byte_3;
HOLD[1399]:=RtB.byte_4;
ФБ RtB разбивает переменную типа REAL на 4 переменных типа BYTE, которые складываются в массив типа BYTE. И при преобразовании первой переменной оказывается влияние и на вторую. Вот я и задался вопросом о том как работает ФБ? Использую один экземпляр ФБ потому что не хочу засорять проект кучей экземпляров, т.к. таких преобразований для заполнения массива достаточно много
Никаких коллизий нет и не может быть для указанного способа использования если только не намутили внутри ФБ.Что там делает внутри Ваш ФБ - только Вы и знаете.
Для описанной задачи внутренность ФБ - это 2-4 строчки. Как там можно намутить ? :)
так вот и я думаю что ничего особого там нет и расчитывается за один проход. Как можно было догадаться это кусочек из реализации modbus(slave). Просто когда я тем же пресловутым лектусом записываю первые четыре из приведенных элементов массива, значение вторых тоже "задевает". Кстати "глюк" подобный наблюдается и в массиве Input_registers
capzap,
так функция же возвращает только одно единственное значение. В обратном преобразовании я использую как раз функцию.
или вы предлагаете сделать функцию, которая будет выделять из REAL переменной конкретный указаный байт?
Добрый день. Может кто подскажет кусочек программы для ПР 110 управления реверсивным счётчиком от 2 датчиков, с определением направления движения в + или -
Здравствуйте. Заранее извиняюсь за глупый вопрос. Есть ли в библиотеке oscat ФБ для перевода 16-й ASCII формы в формат чисел? То есть в строке получаю что-то типа Е069. Использую блок и на выходе получаю реальное значение.
Валенок,
capzap,
большое спасибо за разъяснения. думаю косяк действительно где-то в коде. Одно подозрительное место пофиксил, тестирую, но оно поидее не должно никак влиять. Вобщем буду дальше ковыряться в том что понаписал))) К сожалению у меня ещё фактор качества GPRS соединения вмешивается. Вобщем будем шлифовать)
function h_to_dw : dword
var_input
str : string;
end_var
h_to_dw:=string_to_dword(concat('16#',str));
А из двоичного в десятичный нада ? :) Недорого отдам
Понимаете - rovki побъёт
Здравствуйте. Подскажите, вот у меня есть проект, но он делался для ПЛК-154, теперь его надо перенести на ПЛК-150, как это можно сделать не переписывая всю программу ? Можно ли в проекте где-нибудь поменять тип ПЛК ?
Спасибо, за ответ, по-мучавшись, переписал программу на 150-й ПЛК.
Теперь другой вопрос, может есть у кого пример опроса трм138-р по rs-485 с помощью протокола овен, а то пока нахожу только примеры с модбасом ?
Всё, вопрос снят, нашёл пример, правда не с трм138, но похожий.
Спасибо, конечно. Но писал второпях и уже на ходу, поэтому в корне неверно обрисовал ситуацию. Прошу прощения за свою глупость.
У меня есть строка например с кодом Е069. Мне надо подучить реальное значения. В строке дополнительный код, то бишь реальное значение будет -8087. Затем уже его буду обрабатывать как мне надо. Вот сейчас пишу алгоритм переработки из HEX дополнительного в реальное значение (то есть как раз из Е069 получаю -8087).
Моя реализация получается какая-то кривоватая. Поэтому и думаю может в oscat есть более красивая реализация.
Вы не поверите:
function h_to_i : int
var_input
str : string;
end_var
h_to_i:=string_to_int(concat('16#',str));