Попробуйте добавить ResetPSB(300) перед SetPSB и MacroSet() c кавычками уберите (только код оставьте)
А лучше использовать команду "Присвоить значение"!!!
А ещё лучше команду "Открыть окно", у вас ID окна будет в дереве, например 61001.
Последний раз редактировалось EFrol; 05.08.2025 в 12:40.
1. Не видно условие вызова ФО в закладке "Режим". Не ясно как вызывается ФО.
2. Окно тревог будет вызываться только при фронте бита 300 (при переходе из 0 в 1). Для повторного вызова окна его надо будет сначала сбросить.
3. Имя макроса задается при его создании и в теле макроса его определять не надо.
Да, верно, ошибка моя
Я не силён в С. Подскажите, мне нужно по состоянию битов из регистра PSW открывать окна по условию. Я пробую реализовать так
ResetPSB(401); //PSB(401) -бит который выставляю на открытие окна
if (PSW[270] & 0x01) //читаю состояние 0 бита состояния
{
if (GetPSBStatus(300)) // если PSB(300) в 1
{
ResetPSB(401); // PSB(401)- не выставляется
}
else // иначе
{
SetPSB(401); // PSB(401)- выставляется
}}
Но когда таким образом считываю последующие биты у меня открываются по несколько окон, четные или не четные. Т.е. я На открытие 3-х окон определил 3 бита PSB(401),PSB(402),PSB(403).
Сам спросил, сам отвечу. (PSW[270] & 0x01)- такую форму записи чтения бита я взял из помощи КонфигураторСП300. Записал битовую маску так (PSW[257] >> 1) & 1 и всё заработало как мне нужно.