-
- +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)