Спасибо, kondor3000!
3_Pos_My_copy открыл и теперь могу посмотреть что там есть и как работает.
Теперь я понял как можно открыть остальные бибки.
Вид для печати
Спасибо, kondor3000!
3_Pos_My_copy открыл и теперь могу посмотреть что там есть и как работает.
Теперь я понял как можно открыть остальные бибки.
Добрый день!
Опять обращаюсь за помощью. Не получается подключиться через USB.
В настройках диспетчера устройств виден вопросик у драйвера, но при обновлении драйвера на скачанный с сайта ОВЕН система пишет, что "Наиболее подходящие драйверы для данного устройства уже установлены".
в комплекте с драйвером идёт специальный файл в формате txt, прочтите его, там инструкция что делатьЦитата:
В настройках диспетчера устройств виден вопросик у драйвера
"4) Windows ппопытается определить устройство, но не сможет. Далее откроется окно с возможными вариантами установки драйвера"
Этого не происходит. Windows пикает, но ничего не пишет.
Причем с этого же порта и этим же кабелем я нормально подключаюсь к панели СП310.
Пробовал удалять драйвер, но Windows сама быстро устанавливает свой.
Через адаптер USB-RS232 тоже не получается.
там двадцать строчек, дочитайте до конца
Цитата:
Повторная установка/переустановка
1) Подать питание на ПЛК
2) Дождаться загрузки ПЛК (загорится индикатор работа)
3) Подключить кабель USB к ПК, затем к ПЛК
4) Открыть диспетчер устройств, вкладка порты,PLC100 CDC USB, правой кнопкой, удалить драйвер
5) После удаления, снять питание с ПЛК, отключить кабель USB
6) Выполнить перезагрузку
7) Установка драйвера согласно пункту Первая установка
Всё это пробовал. Даже отдельно устанавливал драйвер USB_Driver_PLC1xx(M02)_v1.0.1.exe. После чего он виден в диспетчере устройств (см. приложение "Драйвер 1") Драйвер "PLC100 USB COM.inf" не получается установить, виндоус пишет, что "Наиболее подходящие драйверы для данного устройства уже установлены".
В общем, испробовав всё, что нашёл в документации и на форуме, я решил, что предыдущий работник, который перепрошивал контроллер, что-то там изменил, влияющее на соединение. А то, что контроллер перепрошит, видно по измененному IP адресу, он не такой, какой идет с завода.
В связи с этим, осталось сбросить на заводские настройки контроллер. Я пробовал командой "Сброс (заводской)", но IP не поменялся, значит основная прошивка не поменялась. Как вернуть контроллер к заводской прошивке?
Через ПЛК-браузер я считал информацию о контроллере. Там указано, что таргет должен быть 3.12., Но на сайте овена я вижу только 3.3 и 2.12. Где взять 3.12?
PLC model MODEL PLC 110-60
Версия ПО метр: 2.0
Binary VERSION 1.2.42
Need Target version >= 3.12
Compiled: 14:38:47 Feb 8 2021
STM32 binary version 115
MAC 11:11:11:11:11:11
IP 10.2.11.119
GATE 10.2.1.1
MASK 255.255.0.0
Информация о модуле:
FactoryInfo
--------------------------------------
name OWEN SOM01
revision som01c04
factory_id facP1-C1-O
factory_date 18.07.2023
serial_number 111111111111111111
MAC 11:11:11:11:11:11
USB_name OWEN PLC
USB_VID 0x1555
USB_PID 0x1234
USB_serial 111111111111
preferred_binary 1.0.5+
--------------------------------------
name System pcb
revision PLC60C05
preferred_binary 114M
--------------------------------------
name IO pcb
revision PLC62C06
--------------------------------------
name Power pcb
revision IPD23P06
Видно что сброшен МАС и серийный номер. По коду IP я понял, что через ПЛК-браузер была применена команда "formatFFS", которая именно так меняет IP. Нигде не нашел как вернуть МАС и серийник.
либо делалась перепрошивка, неизвестно для чегоЦитата:
По коду IP я понял, что через ПЛК-браузер была применена команда "formatFFS"
рекомендую забить на юсб и подключиться через ТСР порт и там уже исправить адреса и маску на необходимые
с юсб такое бывает, лечиться "заменой" ноутбука
Да, я уже работаю через хаб. Победить винду пока не получается, ноут пока только один. Была надежда, что есть решение у людей более опытных. Не думаю, что предыдущий работник ездил по котельным с хабом и останавливал объект, чтобы воткнуть хаб.
решения однозначного нет. Я сделал со своим ноутом под сотню систем, но весной приехал и также обломался и с юсб, и с тср, пришлось ехать за хабом в днс. Причём до меня приезжал наладчик, тупо не думая воткнулся по юсб и спокойно работал. ХЗ что случилось, но вот винда отрыгивала этот плк. После этого на другом контроллере в другом месте ничего не меняя, спокойно подключалсяЦитата:
Была надежда, что есть решение
ну если у вас система встанет при отключении шнурка тср, и вы жосско экономите даже на китайском хабе за 1000-1500 рублей, то сделайте подключение панели по РС-232, и никаких остановок делать не надоЦитата:
останавливал объект, чтобы воткнуть хаб.
но тем не менее - он либо шил ПЛК, либо форматнул. Зачем - непонятно. Вероятно также были проблемы с нимЦитата:
Не думаю, что предыдущий работник ездил
Добрые люди помогите разобраться. Появилась проблема при первоначальной загрузке или сбросе ПЛК 110-32М2 сбрасывает в 0 требуемые уставки времени, мощности и тп. Пробовал и в константы переводить все равно при первом запуске 0 вместо нужного значения...
Вложение 78909
Дело в том что они уже в слейве, или я неправильно понимаю?\
Вложение 78911
Переменная из Скады и с Панели должна записываться однократно, только при изменении. Обычно так и есть.
Вероятнее всего у вас идёт перезапись из программы ПЛК.
Проверить просто, добавьте новую переменную, и проверьте сохраняется ли она, первый раз её придётся записать руками.
Если объявить переменную как локальную, то её значение применяется и сохраняется автоматически tDelta_T. А если я её объявляю как глобальную, т.е. присваиваю к слэйву - сбрасывается в нуль.
Вложение 78921Вложение 78922
Извиняюсь ввел в заблуждение не дописав... Еще раз перепроверил. Добавил переменную TEST в слейв, после загрузки проекта она приняла значение 0, задал вручную нужное значение и снял питание с контроллера - значение сохранилось, а при сбросе (кнопкой сброс на ПЛК) сбросилось в 0. Как сохранить значение при сбросе, добавить ее в VAR RETAIN PERSISTENT?
Помогите пожалуйста правильно написать CHARCURVE на ST.
Спасибо.
Для решения задачи требуется написать пользовательский функциональный блок, который позволит расширить возможности обычного блока CHARCURVE до возможности подавать на вход и получать на выходе числа с плавающей точкой, а также одновременно интерполировать по двум переменным Z=f(X,Y).
Но для начала хочется изучить как работает оригинальный CHARCURVE.
https://www.google.com/url?sa=t&sour...jd8fL3QC8ASnR6
Но это же линейное преобразование. В свое время в 97м мы на паскале писали построение по заданным точкам с максимальным приближением кривой к форме, заданной по уравнению (синусоида, парабола, гипербола и даже сложные тригонометрические уравнения). Недавно искал, не нашел. Похоже удалил...
В моем случае функция Z=f(X,Y) задается таблично, но все равно спасибо!
Где-то на форуме выкладывали функцию отличную, дайте ссылку, если кто-то помнит, что бы еще раз сказать спасибо автору.
Код:TYPE Point_GR :
STRUCT
X,Y: REAL;
END_STRUCT
END_TYPE
Код:FUNCTION MyGraf_p : REAL
VAR_INPUT
IN: REAL; (*Входной сигнал*)
pt : POINTER TO ARRAY[0..99] OF Point_GR; (*Массив точек графика, не более 100 пар точек X,Y*)
size : UINT;
END_VAR
VAR
a: INT; (*Начало интервала поиска*)
b: INT; (*Конец интервала поиска*)
N: INT; (*Число точек в графике*)
i: INT;
END_VAR
Использование:Код:N:= SHR(size,3)-1; (*Число точек в графике*)
(*Начальные значения интнрвала поиска*)
a:=0;
b:=N-1;
(*Обрезание графика для крайних точек*)
IF IN<=pt^[0].X THEN
MyGraf_p:=pt^[0].Y;
ELSIF IN>=pt^[N-1].X THEN
MyGraf_p:=pt^[N-1].Y;
(*Теперь можно начать поиск*)
ELSE
WHILE (b-a) <> 1 DO (*В конце концов, входной сигнал ТОЧНО попадет между двумя соседними точками X(a) и Х(а+1)*)
i:=(a+b)/2; (*Делим интервал поиска пополам*)
IF IN=pt^[i+1].X THEN (*Может нам повезло, и мы сразу нашли точку? *)
a:=i; b:=i+1; (*Бинго! прекращаем итераций, нечего в пустую молотить :) *)
(*мимо :( ,тогда посмотрим в какую половину интервала попали*)
ELSIF IN>pt^[i].X THEN (*Если входной сигнал больше середины интервала поиска,*)
a:=i; (*то следующий поиск будем делать начиная от середины и до конца массива*)
ELSE (*А если входной сигнал меньше середины интервала поиска,*)
b:=i; (*то следующий поиск будем делать начиная от начала и до середины массива*)
END_IF
(*Таким образом на каждой итерации отбрасываем из поиска заведомо ненужную половину значений
две соседние координаты X(a) и Х(а+1), меду которыми попадает входной сигнал найдем очень быстро
для 8 точек графика нужно не более 3 итераций
при 9..16 точек в графике нужно не более 4 итераций
при 17..32 точек в графике нужно не более 5 итераций
при 33..64 точек в графике нужно не более 6 итераций
при 65..128 точек в графике нужно не более 7 итераций
инфа точная - 100% ;) *)
END_WHILE
(*Теперь самое простое - сделать линейную аппроксимацию по двум точкам ;) *)
MyGraf_p:=pt^[b].Y-(pt^[b].X-IN)*(pt^[b].Y-pt^[a].Y)/(pt^[b].X-pt^[a].X);
END_IF
Код:PROGRAM PLC_PRG
VAR
GR: ARRAY [0..49] OF Point_GR:=
(X:=0, Y:=15),(X:=3, Y:=25),(X:=4, Y:=45),(X:=8, Y:=75),(X:=15, Y:=45),
(X:=16, Y:=45),(X:=20, Y:=65),(X:=22, Y:=75),(X:=40, Y:=95),(X:=50, Y:=105),
(X:=110, Y:=15),(X:=120, Y:=25),(X:=130, Y:=45),(X:=140, Y:=75),(X:=150, Y:=45),
(X:=160, Y:=45),(X:=200, Y:=65),(X:=220, Y:=75),(X:=240, Y:=95),(X:=250, Y:=305),
(X:=301, Y:=15),(X:=305, Y:=25),(X:=324, Y:=45),(X:=380, Y:=75),(X:=415, Y:=45),
(X:=416, Y:=45),(X:=420, Y:=65),(X:=422, Y:=75),(X:=440, Y:=495),(X:=450, Y:=505),
(X:=511, Y:=15),(X:=515, Y:=25),(X:=524, Y:=45),(X:=580, Y:=75),(X:=615, Y:=45),
(X:=416, Y:=45),(X:=420, Y:=65),(X:=422, Y:=75),(X:=440, Y:=495),(X:=450, Y:=505),
(X:=621, Y:=15),(X:=625, Y:=25),(X:=634, Y:=45),(X:=680, Y:=75),(X:=695, Y:=45),
(X:=676, Y:=45),(X:=680, Y:=65),(X:=692, Y:=75),(X:=740, Y:=495),(X:=750, Y:=505);
IN: REAL;
OUT: REAL;
END_VAR
А если хотите изучить, то код библиотеки Util открыт, открываете в CoDeSys и изучаете.Код:OUT:=MyGraf_p(IN, ADR(GR), SIZEOF(GR));*)
petera, здесь
Добрый день.
Подскажите, пожалуйста, по ПО Codesys v.2.3.
Мне необходимо реализовать имитацию работы конвейера который считает коробки.
В условиях задания есть требования, чтобы у конвейера было два состояния включен и выключен => vkl_konv, тип переменной булево = 0 или 1. Весь функционал разработал на ST и он работает.
Суть вопроса: В визуализации создал графический интерфейс и на нем есть прямоугольник который отвечает за отображения состояния конвейера. Удалось сделать, чтобы при выключенном конвейере была заливка зеленого цвета, при включенном - заливка красная (требования из ТЗ). Подскажите, пожалуйста, как сделать, чтобы у этого прямоугольника при зеленой заливке отображалась надпись "Конвейер выключен" = значение переменной 0, а при красной заливке отображалась надпись "Конвейер включен" = значение переменной 1. В настоящее время отображается всегда одна подпись, заданная в разделе "Текст".
Заранее спасибо!
Вот так можно
Вложение 78972
Добрый день, собрал схему аварийного отключения работы установки при аварии вентилятора. Собственно вопрос, можно ли убрать из нее таймер. В проекте уже имеется 6 таймеров 3 из которых почти постоянно в работе, либо оставить так?
Изначально включается xDO6_FUN, через некоторое время приходит сигнал TEST_FAN_ON. Переменная TEST служит для проверки отключения при отсутвии сигнала включения вентилятора (изначала надо TRUE, инвертирование не поставил) Если убрать таймер TOF, то в целом система работает, за исключением ложного кратковременного сигнала авария при первом включении, на время прохождения сигнала о включении вентилятора, хотелось бы от нее избавиться.
Вложение 78979
xDO6_FUN включается когда установку из ручного в авто переводят (на схеме не представлено). Далее, если xDO6_FUN и TEST_FAN_ON = TRUE, а AVARIA_FAN_OFF: FALSE подключается нагрузка. При отсутствии нагрузки xDO6_FUN отключается через заданное время, затем при необходимости подключить нагрузку сначала включается xDO6_FUN: TRUE , проверятся что он не в аварии AVARIA_FAN_OFF: FALSE и так по кругу. Пока установка в работе, вентилятор TEST_FAN_ON должен быть всегда включен, в ином случае должно перейти в аварию AVARIA_FAN_OFF: TRUE и выключить установку, дабы не перегрелась.
Я не знаю всех нюансов, но может так попробовать?
Вложение 78980