-
- Мы свели все койлы и прочее к упаковке в холдинг регистры.
Дискретный ввод вывод упакован по битовой маске в холдинг регистры.
Сейчас это норма. - нoль(09.04.2025 04:00,
)
- +1. Именно так и мы сделали в своих железках. - Nikolay_Po(09.04.2025 17:17)
- Не, ну это понятно, что неудобно и лишний гимор асушнике. По регистру каждой сущности, были бы дискретные сигналы в значимом количестве, даже не спрашивая битовые команды задействовал бы. Или было бы 100девайсов в линии, а у меня больше двух сомнительно и опрос чаще раза в минуту тоже сомнительно. - Andreas(09.04.2025 09:18)
- Здравстуйте "гонки сигналов", называется. Если в двух разных
процессах на хосте будет одновременная попытка записать два разных
бита в одном регистре. - Cкpипaч(09.04.2025 09:08)
- что значит два разных процесса пишут в один бит? пишет мастер в
слейва. мастер один. или ты о чем-то другом? - LordN(09.04.2025 12:33)
- В один регистр, в разные его биты. Мастер - один, ровно до тех пор,
пока ты не сообразишь (если это SCADA) что два разных тега
"записать единичку" это гонка сигналов "чтение-модификация-запись"
и результат может быть немного разный, в зависимости от того кто первый и насколько мало от него отстаёт
второй. Cкpипaч(94 знак., 09.04.2025 13:35)
- В таком случае, делается отдельно регистр с маской для установки
бит и отдельно - для снятия. Как GPIO у STM32F. - Nikolay_Po(09.04.2025 17:19)
- В таких случаях используются coil's. Или отдельные номера регистров (это же не память, это только номера). - Cкpипaч(09.04.2025 17:41)
- если это возможно, значить надо ебать и пиздить пограммиста. LordN(294 знак., 09.04.2025 17:03)
- Не дело слэйва разбираться приоритетах или конфликтах команд верхнего уровня. "раб" обязан не задумываясь исполнять приказы, четко и со всем старанием и не более того. - 3m(10.04.2025 10:41)
- ...а еще, всем нужно быть здоровыми и богатыми. Передавайте битовые
команды через коилы и не испытывайте судьбу. Cкpипaч(166 знак., 09.04.2025 17:52)
- Спасибо. - Nikolay_Po(10.04.2025 09:33)
- ну, это-то точно косяк пограммиста. два логически разных устройства
в одном командном регистре - это какая-то иканомика. от слова "оно
тебе еще не раз икнется" :о) LordN(549 знак., 10.04.2025 08:30, картинка)
- Утомил ты необоснованными претензиями к программистам. Но к выводу
ты пришел верному - используй коилы или целые регистры вместо них. Паковать по несколько команды на запись в
один регистр - кроилово. - Cкpипaч(10.04.2025 10:01)
- в каком месте предложенный вариант создаст проблему? - LordN(10.04.2025 16:32)
- В СКАДЕ. Представь себе "упакованные по шеснадцать" биты управления
вытяжными вентиляторами. Cкpипaч(309 знак., 10.04.2025 16:42)
- ну хз. со скадами я не столько много работал чтобы знать все их
косяки. но если работа пусть даже со скады идёт через плк который
рулит каким-то слейвом который уже рулит вентами, то тут косяков
вроде не должно быть - LordN(10.04.2025 16:51)
- Мне лень расписывать пошагово такую фундаментальную штуку как
"неатомарная запись". Но ставить ПЛК только для того чтобы
упаковать шестнадцать бит в один регистр (по сравнению с тем чтобы
абсолютно точно также их упаковать, только с другим кодом
функции)... у богатых свои причуды. Cкpипaч(176 знак., 10.04.2025 17:09)
- Перенос выполнения алгоритмов в SCADA рабочий, но снижающий
надежность системы вариант. Делали так и потом переделывали.
Объединение битовых сигналов в регистр для многих SCADA снижает
стоимость лицензии - уменьшается количество точек ввода-вывода. - AlexG(11.04.2025 03:03)
- С этим согласен, не всё можно переносить на SCADA. У меня рынок АСМУ инженерных систем зданий, в моих проектах полно устройств, управляемых только дистанционной командой оператора, а она все равно приходит только из SCADA. - Cкpипaч(11.04.2025 08:47)
- вот-вот. теги. 32битный регистр - это один тэг. а 32 койла - это 32
тэга. LordN(342 знак., 11.04.2025 07:10)
- Коллега, прочитать 32 бита, функцией 1 или 2 - вполне себе один запрос. Осознайте наконец - вы боритесь против использования функции, специально придуманной под задачу, использованием функции, придуманной для совершенно другого :) - Cкpипaч(11.04.2025 09:00)
- А архив? А тренды? В обычном проекте, стоимость лицензии на софт, раз в десять меньше стоимости труда программиста-скадовика. Что экономим? И за счет чего? Cкpипaч(102 знак., 11.04.2025 08:44)
- Перенос выполнения алгоритмов в SCADA рабочий, но снижающий
надежность системы вариант. Делали так и потом переделывали.
Объединение битовых сигналов в регистр для многих SCADA снижает
стоимость лицензии - уменьшается количество точек ввода-вывода. - AlexG(11.04.2025 03:03)
- Мне лень расписывать пошагово такую фундаментальную штуку как
"неатомарная запись". Но ставить ПЛК только для того чтобы
упаковать шестнадцать бит в один регистр (по сравнению с тем чтобы
абсолютно точно также их упаковать, только с другим кодом
функции)... у богатых свои причуды. Cкpипaч(176 знак., 10.04.2025 17:09)
- ну хз. со скадами я не столько много работал чтобы знать все их
косяки. но если работа пусть даже со скады идёт через плк который
рулит каким-то слейвом который уже рулит вентами, то тут косяков
вроде не должно быть - LordN(10.04.2025 16:51)
- В СКАДЕ. Представь себе "упакованные по шеснадцать" биты управления
вытяжными вентиляторами. Cкpипaч(309 знак., 10.04.2025 16:42)
- в каком месте предложенный вариант создаст проблему? - LordN(10.04.2025 16:32)
- Утомил ты необоснованными претензиями к программистам. Но к выводу
ты пришел верному - используй коилы или целые регистры вместо них. Паковать по несколько команды на запись в
один регистр - кроилово. - Cкpипaч(10.04.2025 10:01)
- В таком случае, делается отдельно регистр с маской для установки
бит и отдельно - для снятия. Как GPIO у STM32F. - Nikolay_Po(09.04.2025 17:19)
- В один регистр, в разные его биты. Мастер - один, ровно до тех пор,
пока ты не сообразишь (если это SCADA) что два разных тега
"записать единичку" это гонка сигналов "чтение-модификация-запись"
и результат может быть немного разный, в зависимости от того кто первый и насколько мало от него отстаёт
второй. Cкpипaч(94 знак., 09.04.2025 13:35)
- что значит два разных процесса пишут в один бит? пишет мастер в
слейва. мастер один. или ты о чем-то другом? - LordN(09.04.2025 12:33)
- Чертовски неудобно если это действительно реле, светодиоды или
что-то подобное. Теперь чтобы переключить только одно реле нужно
прочитать состояние регистра, установить/сбросить в нём бит и
записать обратно. А чтобы узнать состояние одного концевика нужно
прочитать регистр где их несколько и выбрать оттуда только один
бит. Не так уж трудно реализовать доступ к дискретным входам и
выходам (Coil) обоими способами - как к собранным кучками в
регистры, так и к отдельным ЫЫyкпy(91 знак., 09.04.2025 05:47)
- А что мешает иметь на стороне мастера копии всех регистров, в
которых сгруппированы койлы, и сбрасывать/устнавливать (либо
опрашивать, в случае регистров ввода) битики в этих копиях, и
выводить регистры модбасом? Или это как то противоречит идеологии
использования модбас? - Rainman62(11.04.2025 05:25)
- Мешает - здравый смысл. Потому что это не нужно. Есть функции для работы с битам, их и нужно использовать, а не "оригинальничать". - Cкpипaч(11.04.2025 08:59)
- Если реализовать функцию 22 (0x16) Mask Write Register, то биты в регистре можно будет устанавливать и сбрасывать баз предварительного чтения. Надо будет только как-то убедить автоматизаторов что это удобнее чем фунции 5 и 15 ;)) - ЫЫyкпy(11.04.2025 07:37)
- Зачем? Есть регистр входов и регистр выходов. Один читаешь, другой
записал. Ну биты паковать и распаковать надо. Иначе скорость будет
ничтожная и теги в скаде быстро кончатся - нoль(09.04.2025 05:53,
)
- Во первых, абсолютно без разницы, адресуют функции 3 и 6 один и тот
же регистр или два равных. Во вторых, это пипец как не атомарно, в третьих, теги в скаде быстрее закончатся какраз если паковать,
а потом распаковывать. Вы же не предлагаете всю упаковку в одном теге хранить? :) - Cкpипaч(09.04.2025 09:26)
- Не догоняю. В реальности есть модуль ввода-вывода например. Код в
ПЛК читает все входа. Потом исполняется код техпроцесса, потом
записываем все выхода. Про какую атомарность речь идет? Ну и если
делать один пин ввода вывода как один инпутс, то это займет один
регистр. И один тег в скаде. А у меня пятьсот входов/выходов
заурядное дело. нoль(96 знак., 09.04.2025 09:31,
)
- Что у вас там за скады убогие, что хотя бы пару-тройку ГБ ОЗУ не
позволяют использовать? И неужто теги 8-битные? - Eddy_Em(09.04.2025 09:28)
- Ложись спать, Эдд. Не позорься. - Cкpипaч(09.04.2025 09:29)
- Чем мне позориться? Тем, что я эти ваши идиотские скады в глаза не
видел? И не собираюсь! Ты прекрасно знаешь, что я маздай даже
длинной палкой тыкать не буду, не то, что там что-нибудь
настраивать. Eddy_Em(55 знак., 09.04.2025 09:34)
- Бан на один час. Из сострадания. - Cкpипaч(09.04.2025 09:47)
- Чем мне позориться? Тем, что я эти ваши идиотские скады в глаза не
видел? И не собираюсь! Ты прекрасно знаешь, что я маздай даже
длинной палкой тыкать не буду, не то, что там что-нибудь
настраивать. Eddy_Em(55 знак., 09.04.2025 09:34)
- Ложись спать, Эдд. Не позорься. - Cкpипaч(09.04.2025 09:29)
- Не догоняю. В реальности есть модуль ввода-вывода например. Код в
ПЛК читает все входа. Потом исполняется код техпроцесса, потом
записываем все выхода. Про какую атомарность речь идет? Ну и если
делать один пин ввода вывода как один инпутс, то это займет один
регистр. И один тег в скаде. А у меня пятьсот входов/выходов
заурядное дело. нoль(96 знак., 09.04.2025 09:31,
- Во первых, абсолютно без разницы, адресуют функции 3 и 6 один и тот
же регистр или два равных. Во вторых, это пипец как не атомарно, в третьих, теги в скаде быстрее закончатся какраз если паковать,
а потом распаковывать. Вы же не предлагаете всю упаковку в одном теге хранить? :) - Cкpипaч(09.04.2025 09:26)
- А что мешает иметь на стороне мастера копии всех регистров, в
которых сгруппированы койлы, и сбрасывать/устнавливать (либо
опрашивать, в случае регистров ввода) битики в этих копиях, и
выводить регистры модбасом? Или это как то противоречит идеологии
использования модбас? - Rainman62(11.04.2025 05:25)
- Если ты делаешь слэйв, что напишешь то и будет работать. Я
реализовал кучу функций, а по факту использую лишь 3, 6, 16. Хотя
продвинутые мастера поддерживают настройку 6/16 IBAH(800 знак., 08.04.2025 21:01, картинка)
- Как я понял, Report Server ID (0х11) вообще нигде не реализована?
:) - Cкpипaч(08.04.2025 21:02)
- Хороша стандартная команда, ответ на которую device specific. Зачем
ее реализовывать для единичных устройств, если ответ может понять
только тот, кто и так знает что за устройство отвечает? ;) - AlexBi(08.04.2025 23:05)
- Ну, примерно это я и имел в виду. Cкpипaч(124 знак., 09.04.2025 09:15)
- Нахуя козе боян? Скаде надо читать/записывать данные, а "информацию
о сервере" вводит пользователь скады. А если очень хочется, это
можно реализовать стандартными средствами, через команду 3 - IBAH(08.04.2025 21:12)
- Стандартными, говоришь? Напомнило анекдот про сто языков программирования. И про разработку нового, на замену их всех. Cкpипaч(19 знак., 08.04.2025 22:01)
- Хороша стандартная команда, ответ на которую device specific. Зачем
ее реализовывать для единичных устройств, если ответ может понять
только тот, кто и так знает что за устройство отвечает? ;) - AlexBi(08.04.2025 23:05)
- Как я понял, Report Server ID (0х11) вообще нигде не реализована?
:) - Cкpипaч(08.04.2025 21:02)
- Имеет право на жизнь, если не начинать паковать биты, которые на запись, в регистры кучками (атомарность!) - Cкpипaч(08.04.2025 19:43)
- Ты делаешь слейва или мастера? - LordN(08.04.2025 18:28)
- слейва ессно, девайс на динрейку. Нах мне мастер? - Andreas(08.04.2025 18:29)
- Аяебу? LordN(348 знак., 08.04.2025 18:33 - 18:37)
- Это понятно, вопрос если я только 2 команды с кучей регисторов
реализую, плкашники не обидятся? - Andreas(08.04.2025 18:36)
- все таки три команды, шестнадцатую надо делать обязательно, без неё
инт32 и флоат работать не будут - IBAH(08.04.2025 20:54)
- вот смотри, запрашивается четыре регистра, в ответе все четыре присутствуют, функция запроса со стороны мастера 0х03 LordN(117 знак., 09.04.2025 08:26, картинка)
- Я - нет. - Cкpипaч(08.04.2025 19:44)
- Да им пох. LordN(159 знак., 08.04.2025 18:40)
- все таки три команды, шестнадцатую надо делать обязательно, без неё
инт32 и флоат работать не будут - IBAH(08.04.2025 20:54)
- Это понятно, вопрос если я только 2 команды с кучей регисторов
реализую, плкашники не обидятся? - Andreas(08.04.2025 18:36)
- Аяебу? LordN(348 знак., 08.04.2025 18:33 - 18:37)
- слейва ессно, девайс на динрейку. Нах мне мастер? - Andreas(08.04.2025 18:29)
- Ну вот наткнетесь на китайскую самопальщину, не поддерживающую широковещательные пакеты или еще что, и посмотрим… Eddy_Em(200 знак., 08.04.2025 18:15, ссылка)
- Мы свели все койлы и прочее к упаковке в холдинг регистры.
Дискретный ввод вывод упакован по битовой маске в холдинг регистры.
Сейчас это норма. - нoль(09.04.2025 04:00,