Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
вот уж совершенно не факт, если кто то работает дальше со всеми переменными структуры через указатель да еще и в одной портянке, то наверное дольше, а если указатель передать в функцию, которая и обрабатывает логический блок на основе данных, то в объявлении тип данных структура и нет ни каких галочек
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Вот например :
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)
Помогите пожалуйста понять и найти в чем я ошибаюсь.1-1.jpg
1-2.jpg
Да нормуль все. В рамках одного проекта видеть все концы - для тренинга самое то
to senkos
проект, если сами не разберетесь или кто посмотрит, гляну позже. Обычно - настройки
Последний раз редактировалось Валенок; 19.08.2023 в 10:14.
Да не нормуль, он сам написал есть структура compressors AT%QD7.1.0 : ARRAY [1..8] OF COMPRESSOR;, которую надо передать на панель,
структура из 12 регистров * 8 =96 регистров
В слейв добавляем 48 шт 4 байт или 96 шт 2 байт, и всю структуру кладём по адресу первого регистра слейва. Адрес слейва для панели 1.
Вот примерно так, у меня в ПЛК только другие адреса, с начальными значениями в структуре всё видно, если по 2 байт сделать. 1 компрессор.jpg
Вот в работе по 2 байта, целочисленные видны правильно 1 Компрессор 2 байт.jpg
По байтам включён 0 бит (1) и 8 бит (256) регистра WORD =257
Последний раз редактировалось kondor3000; 18.08.2023 в 16:36.
Да суть этого - потренироваться без панели изобразив панель в самом плк
Получится с плк - получится с панелью без вариков))
Из себя же прочитать как из 8АС, в себя же отправить обработанные данные, изобразив панель собой, и в себе же как в панели увидеть что отправили себе из себя. Просто же. Это если панель-слейв.
А если она мастер так и читать из себя как 8ас, и получая в себя, обработать в сразу в слейве.
Последний раз редактировалось Валенок; 18.08.2023 в 16:16.
Жесть какая, по моему я зря это затеял
У меня есть ПЛК, есть модуль ввода, но к нему жду конвертор чтобы сконфигурировать, есть и панель, но не хочу пока ее использовать без четкого понимания основ.
Думал просто соединив два RS и задав на слейвах значения, смогу получить их на Мастере, тем самым эмулировать модули ввода. Каждый слейв это условный модуль ввода как бы (тут я просто указал одну переменную Real)/