Мне показалось, что у kondor3000 очень даже просто и корректно получилось.
Подскажите, а о каких библиотеках идет речь? Можно ссылку на этот материал?
Вид для печати
Просто поймал скрин по времени, если по 1000 мс по умолчанию в ОРС (запись, потом чтение каждой переменной), то прямо видно как они записываются по очереди в ОРС сервер слейв, в программе тоже всё видно.
Примеры чтения и записи через биб-ки есть на сайте
Примеры / Примеры сетевого обмена/ Обмен через библиотеки Modbus и OwenNet, вам нужен обмен через библиотеки Modbus
https://owen.ru/product/codesys_v2/example_program
Может. Может и биб-ки не нужны- я же говорил.
Непонятно само требование именно такой записи в изложенном вами же виде. Оно несколько нечастое. И подходит ли оно.
Допускаю что в описании слейва так и есть (бывает).
Но так же пока нет никаких исключений варианта что вы что-то недопоняли (про слейв) и какой-то фигней занимаетесь
У меня в проекте несколько ВУ (выпрямители) . И когда включается наша СУ, то нужно дистанционно активизировать эти слейвы ВУ. А для этого необходимо через один регистр запустить (вывести из "спящего" режима), а уж только потом, через другой регистр, прописать режим работы ВУ. Это один из примеров, когда требуется отработка последовательной записи данных в регистры по Modbus. Нарушать последовательность нельзя.
а при "погружении" в спячку - они разве "обнуляются"?Цитата:
вывести из "спящего" режима
каким образом ячейка памяти с адресом этого регистра обнуляется? разве у слейва нет retain?Цитата:
через другой регистр, прописать режим работы ВУ.
каким-то образом он же помнит значение регистра для пробуждения? почему же он должен потерять режим работы ДО спячки?
и если он в спячке, то каким образом слейв ждёт записи в регистр "побудки"? он же тоже должен быть в спячке
а если он не спит, значит не спит и память режима ВУ, и значит никакого жесткача с записью регистра как такового - нет.
а если он спит, то никакого страшного не случится, если в режим будет записано другое значение другого режима (допустим ошибочно)
сдаётся мне, что как и говорилось изначально и потом добито мистером Серый Волк -именно это и не нужноЦитата:
При условии что именно это нужно.
как-то так видится со стороныЦитата:
вы что-то недопоняли (про слейв) и какой-то фигней занимаетесь
И опять вопрос по Modbus. Начинаю понимать, почему мои предыдущие вопросы вызвали столько эмоциональных ответов. Всем большое спасибо!
Допустим, я организовал сиcтему, когда ПЛК Master и один Slave UMD:
Вложение 81629
Правильно ли я понял, что независимо (!) от того, что мы делаем в программе контроллера с регистрами Read101, Read103 и Write104 система обмена данными по Modbus будет постоянно циклически обновлять в UMD значения Read101 и Read103. И цикл обмена будет определяться параметром Poling time, если Work mode = By poll time. А значение Write104 будет записываться во внутренний регистр 104 ВУ только в случае изменения его значения. Для этого Work mode=By value change.
И даже, если мы скроем в условном операторе все обращения к регистрам ВУ, и условие будет FALSE, то в UMD в эти регистры все равно будут записываться значения из ВУ.
Если у меня в Slave UMD будет 20 регистров для чтения, то они будут постоянно считываться из ВУ и передаваться в ПЛК.
Я прав?
Я хотел сказать, что, когда мы считываем в программе значение регистров ВУ, то на самом деле мы считываем значения из UMD. А в UMD регистры заполняются от ВУ по Modbus циклически не зависимо от того, читаем мы эти регистры в программе или нет!
Я так и предполагал. Переменные для чтения я и не хотел изменять в программе. Только чтение. Тут главное, то , что переменные чтения в UMD считываются из регистров ВУ постоянно и циклически. И это происходит, когда мы в программе вообще не обращаемся к этим переменным.