Здравствуйте, такой вопрос в эмуляторе все работает хорошо, а в доме «не очень», и в конфигурации посидел, добавил время опроса и тд, и на st с cfc перепесал, все четно(по подключению все хорошо)
Вид для печати
Здравствуйте, такой вопрос в эмуляторе все работает хорошо, а в доме «не очень», и в конфигурации посидел, добавил время опроса и тд, и на st с cfc перепесал, все четно(по подключению все хорошо)
Опубликовать не могу темы, стоит ограничения
Зависит от раздела форума, некоторые разделы не позволяют обычным пользователям создавать новые темы.
Например, в разделе "В продаже" https://owen.ru/forum/forumdisplay.php?f=28
нельзя
Вложение 69624
а в раздел "ПЛК1хх [M02] https://owen.ru/forum/forumdisplay.php?f=85
можно
Вложение 69626
ЗЫ.
Пост - это всего лишь одно сообщение, а тема - целая ветка с множеством постов.
Добрый день, имеется панель NLcon-CED7, на ней установлен Debian 10. Делаю проект на версии Codesys 3.5 SP16 Patch 3.
Нужно чтобы проект перезаписывался и обновлялся с флешки, сейчас он записывается через LAN.
Как организовать запись с флешки?
В продолжение разобранной темы со STRING в ПЛК(мастер) и МВ(слейв) теперь необходимо подключить СП307 к данному ПЛК.
Как оптимально исполнить это: ПЛК-мастер и СП-слейв или наоборот?
1) Если ПЛК-мастер, то можно так же объявить String output modul и отправлять одним запросом на панель?
2) Если ПЛК-слейв, то необходимо будет сначала прописать все выходы а их будет 56 и считывать одним запросом на панели с помощью функциональной области?
В целом важен алгоритм отправки данных с датчиков которые у меня в массиве на панель:
Код:compressors :ARRAY [0..7] OF COMPRESSOR;
TYPE COMPRESSOR :
STRUCT
bSignal1 :BYTE;
bSignal2 :BYTE;
t_1st :INT;
t_2st :INT;
t_oil :INT;
P_1st :REAL;
P_2st :REAL;
P_oil :REAL;
P_water :REAL;
END_STRUCT
END_TYPE
Для работы с панелью слейвом, надо два UMD, для чтения и для записи ( поменять настройку Запись по изменению)
и отправить можно одним String, только данные одного типа, для 3 типов надо 3 String. 2 BYTE лучше объединить в 1 WORD, тогда 2 String. https://owen.ru/forum/showthread.php...l=1#post244022
Для панели мастер можно создать в слейве, аналог массива ARRAY [0..7] OF COMPRESSOR; и отправить масссивом всё. 2 BYTE тоже лучше объединить.
У панели мастера есть недостаток, хоть один регистр с неверным адресом, будет сильно тормозить.
В принципе да, можно и всё подряд отправить, только с нюансами. Просто так удобней, не надо считать адреса регистров.
Байт в панели нет, 2 байт в панели будет как 1 WORD. Адреса каждого WORD и REAL надо будет высчитывать. Не сложно, но можно запутаться легко.
Одним String тоже всё не отправить, 96 регистров надо разбить на 3 части ( не более 40 регистров за раз) и ещё неудобней считать, так как 8 штук по 12 регистров.
Добрый день
Создаю новые проекты для PLC110.60-L V2 и PLC110.60-M V2, но в конфигурации ПЛК вижу одну и ту же картинку. Как это понимать ?
Открываете целевую платформу и смотрите какой таргет стоит. Вложение 69640 Просто смотрите, ничего не меняя.
Влезу в ваши обсуждения. Я ща первый раз сам пробую панель заюзать, и пришёл к тому же, что Валенок советует - кучку фиговин по 4 Байта в Slave напихать.
Только мне НЕ нравится прямая адресация, и я сделал удобнее для себя: назначил первому из 4 Byte имя в конфигурации ПЛК, взял его адрес через ADR и присвоил указателю на данные. Так код будет прям совсем универсальным, ИМХО.
Ну так логично - это просто определить кусок памяти для обмена. Были в слейве "string" - заюзали бы их. Для задачи выше - хватило бы десятка.
Сначала я тоже так думал. После подумал и решил что at% 1 (один) раз - норм.
-код чище : Slave.чтото vs PSlave^.чтото
-код быстрее : Slave.чтото - прямое обращение, PSlave^.чтото - предварительное обращение к PSlave
А универсальностью я переболел давно. Характерный признак болезни - "код надо писать так, чтоб через 349 лет снурфики с альфа-центавра могли применить это гениальный творение для управления гравиципами подав на вход не 7 а 4". Не с адресом здесь универсальность, это кастом. Здесь универсальность это enum_status для ai и struct_ai. В это легко приводятся ai {8A, 2A, 8AC, 2AC, ПЛК63/73/150/154/160} и сам подход к работе с структурами.
Но мне без разницы кто что и как делает
вот уж совершенно не факт, если кто то работает дальше со всеми переменными структуры через указатель да еще и в одной портянке, то наверное дольше, а если указатель передать в функцию, которая и обрабатывает логический блок на основе данных, то в объявлении тип данных структура и нет ни каких галочек
Вот например :
SysMemCmp(adr(Slave), ...)
vs
SysMemCmp(PSlave, ...)
Редкий случай когда 1-й вариант длинее в написании. Исполнении самой функции - одинаково. Но :
1. Когда-то вы выполнили хотя бы 1 раз инициализацию PSlave
2. Постоянно проверяете какой-то флажок init
3. И-и-и ... 1-й вариант все равно быстрее в вызове )) Аdr - это не совсем функция. Имя и есть адрес. Константный адрес. А к памяти по адресу "PSlave" еще нужно обратится что оттуда достать адрес для передачи))
--
И да. В кач-ве рыбки под темное:
Под указателем Вы не поменяете данные ручками ))
Пробую понять азы на простом примере без использования циклов. Соединил проводами RS1 и RS2, соответственно как на скринах сделал Modbas Master с пятью UMD в которых есть String всего с двумя регистрами.
Так же Modbas Slave добавил переменные на каждое устройство. Адреса их 16,17,18,19,20.
Проект прилагаю, таргет от ПЛК110-24-30PM(M02)
Помогите пожалуйста понять и найти в чем я ошибаюсь.Вложение 69665
Вложение 69666
Да нормуль все. В рамках одного проекта видеть все концы - для тренинга самое то
to senkos
проект, если сами не разберетесь или кто посмотрит, гляну позже. Обычно - настройки
Да не нормуль, он сам написал есть структура compressors AT%QD7.1.0 : ARRAY [1..8] OF COMPRESSOR;, которую надо передать на панель,
структура из 12 регистров * 8 =96 регистров
В слейв добавляем 48 шт 4 байт или 96 шт 2 байт, и всю структуру кладём по адресу первого регистра слейва. Адрес слейва для панели 1.
Вот примерно так, у меня в ПЛК только другие адреса, с начальными значениями в структуре всё видно, если по 2 байт сделать. Вложение 69668
Вот в работе по 2 байта, целочисленные видны правильно Вложение 69669
По байтам включён 0 бит (1) и 8 бит (256) регистра WORD =257
Да суть этого - потренироваться без панели изобразив панель в самом плк
Получится с плк - получится с панелью без вариков))
Из себя же прочитать как из 8АС, в себя же отправить обработанные данные, изобразив панель собой, и в себе же как в панели увидеть что отправили себе из себя. Просто же. Это если панель-слейв.
А если она мастер так и читать из себя как 8ас, и получая в себя, обработать в сразу в слейве.
Жесть какая, по моему я зря это затеял :)
У меня есть ПЛК, есть модуль ввода, но к нему жду конвертор чтобы сконфигурировать, есть и панель, но не хочу пока ее использовать без четкого понимания основ.
Думал просто соединив два RS и задав на слейвах значения, смогу получить их на Мастере, тем самым эмулировать модули ввода. Каждый слейв это условный модуль ввода как бы (тут я просто указал одну переменную Real)/
Никто не против же))) тренируйтесь, главное, что бы вы понимали, что делаете. Не можете работать с блоком, тренируйтесь между ПЛК и панелью,
передайте пару регистров для начала, потом со стрингом и т. д.
Затея со 5 слейвами, возможна, если вы опять понимаете что к чему, и не будете физически туда что то ещё подключать.
Камрады! Раз уж так совпадает, что вы тут объясняете технологию, которую я ща сам применыю в своём проекте с панелью (у меня ИП320, Мастер) то скажите: при такой тхенологии, когда мы отображаем структуру на адреса Slave через указатели или прямую адресацию, переменные в Slave будут RETAIN?
Я, может, косноязычно пояснил. В общем, если в этой струкетуре для панели будут ещё и всякие настройки проекта - то они будут RETAIN, или нет? Вроде как все Slave-переменные в ПЛК всегда RETAIN...
Да. Ретайн не переменные в слейве, а сам слейв
но если что не так пойдёт, это будет не из-за "технологии"
Мда. Гуру форма хреновы. Я зол: никто ничего не пояснил, а только запутали.
Чё делать-то, чтобы всё из панели было RETAIN? Какую документацию про это почитать
Короче, я тестану всё сам тогда. Сорян, но из-за доли недосказанности (которая типа как указывает на профессионализм) и косноязычности я не понимаю.