Cs-Cs нагруженная сетевыми переменными в качестве мастера ПР? не удивительно. Но сам цикл программы ведь легко проверить, при наличии опроса в качестве мастера и без него.
Как минимум в штатном сервисном меню.
Cs-Cs нагруженная сетевыми переменными в качестве мастера ПР? не удивительно. Но сам цикл программы ведь легко проверить, при наличии опроса в качестве мастера и без него.
Как минимум в штатном сервисном меню.
Если я правильно понял всё, что было написано выше:
(Физические входы)+(программа)+(физические выходы) работают как единое целое, а интерфейс работает сам по себе.
Если позволите, интерфейс - это такой "барабашка", который "берет" когда и что хочет, и "возвращает" таким же порядком.
В таком случае передача импульсов по сети блоками типа F_trig невозможна? Получается я запущу F_Trig в слейве, он запишет "1" в бит регистра на один свой цикл, а если мастер в это время "копается" с неотвечающим устройством, он эту "1" профукает, правильно я понимаю?
Я бы сказал более общно: программа ПЛК - сама по себе, а интерфейсы + входы/выходы - сами по себе.
Нет, никак невозможна, если подходить формально: блок F/R_TRIG даёт импульс РОВНО на ОДИН цикл программы.
Он не привязан ни к каким интерфейсам. Более того: передача данных по интерфейсу может потребовать:
* Времени (на линии бывает не только одно устройств, а несколько; обмен данными с ними требует времени)
* Повторной попытки (если на линии была помеха и первая посылка данных не дошла)
Поэтому, конечно же, профукает.
Здесь везде нужен другой подход. И тут есть стандартные решения:
а) Запись по изменению (есть в ПРках и ПЛК) или запись по команде (есть в ПЛК). Она говорит обмену по шине примерно так: "Как будет свободное время, пошли-ка запрос на запись вот этого вон туда". То есть, создаёт "задание" на запись, но не выполняет его мгновенно.
б) Забить на работу обмена и обрабатывать всё в программе по схеме "Если текущее не равно предыдущему и если мы это не меняли - то изменили по Modbus".
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Да. Верно. Если к моменту, когда пришла очередь передавать переменную, её значение несколько раз поменялось, то передаваться будет текущее (последнее) значение. Видимо поэтому в модулях дискретного ввода МВ реализованы счетчики, чтобы можно было зафиксировать факт пришедшего короткого импульса. Пусть позже, чем никогда. Впрочем Вы можете зафиксировать импульс выставлением бита в сетевой переменной, а мастер после прочтения его сбросит.
Последний раз редактировалось EFrol; 09.09.2024 в 19:57.
Когда из пр или ПЛК надо передать импульс, то импульсом формируют 1 для сети, и потом второй стороной эту 1 сбрасывают, как подтверждение получения.
Да, понял, спасибо. Уже переделываю