- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Биты и байты в hmi alarms
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 28 сен 2017, 14:13
- Имя: Артем
- Благодарил (а): 1 раз
Биты и байты в hmi alarms
Здравствуйте!
У меня появился еще один вопрос. И снова по HMI Alarms.
В 14 портале дискретные алармы с плк в панель передаются битами внутри двухбайтовых слов. Из-за этого получается такая дилемма:
1. либо мы используем цифровые индексы внутри слов (типа variable_name.%X0, variable_name.%X1 и т.д.) что делает программу совсем не читаемой для человека
2. либо мы используем булевы переменные с "хорошими" названиями, а потом заталкиваем их в слова. Но это двойная работа.
Есть ли в тиа портале возможность давать переменным дополнительные псевдонимы? Например имея переменную variable_name типа word, дать читаемое символьное имя её отдельным битам.
У меня появился еще один вопрос. И снова по HMI Alarms.
В 14 портале дискретные алармы с плк в панель передаются битами внутри двухбайтовых слов. Из-за этого получается такая дилемма:
1. либо мы используем цифровые индексы внутри слов (типа variable_name.%X0, variable_name.%X1 и т.д.) что делает программу совсем не читаемой для человека
2. либо мы используем булевы переменные с "хорошими" названиями, а потом заталкиваем их в слова. Но это двойная работа.
Есть ли в тиа портале возможность давать переменным дополнительные псевдонимы? Например имея переменную variable_name типа word, дать читаемое символьное имя её отдельным битам.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Биты и байты в hmi alarms
Есть еще 3 я возможность, которую Вы не упомянули. Называется структурные ТЭГи, из PLC идет слово, а в структурном тэге Вы имеете 16 переменных, У меня в структурном тэге даже несколько слов свернуты. Ну и стандартный alarm вполне нормально с ними работает.
Т.е. NDC01AP001 - это у меня структурный ТЭГ, который описывает насос. А скажем NDC01AP001.Sts_ON - признак того, что он включен.
Т.е. NDC01AP001 - это у меня структурный ТЭГ, который описывает насос. А скажем NDC01AP001.Sts_ON - признак того, что он включен.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Биты и байты в hmi alarms
petr2off, набор битов можно засунуть в некоторую структуру одним махом функцией Serialize, обратное разваливание структуры в набор битов - Deserialize. Об этом речь?
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Биты и байты в hmi alarms
Нет. В последних версиях ПО есть такое понятие - пользовательские типы данных. В них создается структура. например sts_pump.
Структура состоит из элементов, которые имеют различные типы. Например битовый тип. Соответственно, элемент имеет атрибуты - битовое и байтовое смещение. Скажем я создаю элемент sts_pump.s_on - битовый, признак включения насоса, sts_pump.s_off - битовый, признак выключеного насоса, sts_pomp.njob - вещественный - текущие обороты насоса. задаются атрибуты. Например байтовый у первых 2-х 0, битовый 0 и 1 соответственно. у вещественного байтовый будет 2 (предыдущее слово состояние занимает например 16 бит или 2 байта). битовое 0 (оно все 4 байта занимает). Далее - если заводится структурные ТЭГи этого типа. Например pump01,pump02 ...
и соответственно я могу уже использовать элементарные ТЭГи pump01.s_on, pump02.s_on...
Под использованием я имею виду и прямое связывание и работа в скриптах
Структура состоит из элементов, которые имеют различные типы. Например битовый тип. Соответственно, элемент имеет атрибуты - битовое и байтовое смещение. Скажем я создаю элемент sts_pump.s_on - битовый, признак включения насоса, sts_pump.s_off - битовый, признак выключеного насоса, sts_pomp.njob - вещественный - текущие обороты насоса. задаются атрибуты. Например байтовый у первых 2-х 0, битовый 0 и 1 соответственно. у вещественного байтовый будет 2 (предыдущее слово состояние занимает например 16 бит или 2 байта). битовое 0 (оно все 4 байта занимает). Далее - если заводится структурные ТЭГи этого типа. Например pump01,pump02 ...
и соответственно я могу уже использовать элементарные ТЭГи pump01.s_on, pump02.s_on...
Под использованием я имею виду и прямое связывание и работа в скриптах
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Биты и байты в hmi alarms
Насколько мне известно, структурные ТЭГИ поддерживаются в портале с V11. а в WinCC с V6. Слово "только" мне не понятно. речь шла о hmi alarms. Какие еще решения Simens по hmi Вы имеете в виду ?
-
- эксперт
- Сообщения: 1172
- Зарегистрирован: 14 ноя 2013, 20:35
- Имя: Анатолий Сергеевич
- Страна: Россия
- город/регион: Башкортостан
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
Биты и байты в hmi alarms
Если у вас анлим в тэгах то можно же булевую переменную привязать в алармы.
По мне так очень удобный инструмент - ссылка на конкретный бит в слове, надо только привыкнуть)))
Я например создаю группу отдельную "alarms" в hmi_tags в ней хранятся все тэги с алармами (двойные слова), затем сами сообщения заполняю в свойстве самого тэга, так запутаться вообще не вариант, главное не забыть про перестановку байтов)))
Тем кто после меня придет редактировать проект должны разобраться при такой конструкции алармов
-
- осмотрелся
- Сообщения: 141
- Зарегистрирован: 08 ноя 2010, 14:03
- Имя: Владимир
- Страна: Россия
- город/регион: Новосибирск
- Благодарил (а): 9 раз
- Поблагодарили: 8 раз
Биты и байты в hmi alarms
Как делаю я - 2 слова: Sw_HMI_MSG - слово триггеров сообщений [биты 7-CHK_dis, 5 - Underflow,4-HiHi, 3-Hi, 2-Lo,1-LoLo,0-Overflow]
Sw_SET_CHK_ACK - Слово включения проверки и подтверждения сообщений [7-CHK, 4-HiHi, 3-Hi, 2-Lo,1-LoLo][7 - CHK_dis, 5 - Underflow,4 - HiHi, 3 - Hi, 2 - Lo, 1 - LoLo, 0 - Overflow]. В Sw_HMI_MSG используется только 1 байт для формирования сообщений. В Sw_SET_CHK_ACK старший байт используется для включения проверки канала и включения порогов, младший - для подтверждения сообщений, потом сравнением с байтом сообщений формируется звуковая сигнализация.
Вроде и экономия 1 тэга на слиянии байта подтверждения и байта включения проверки, но не слишком удобно получается при программировании HMI нужно помнить про смещение в 1 байт.
Нужно попробовать метод Петрова.
Sw_SET_CHK_ACK - Слово включения проверки и подтверждения сообщений [7-CHK, 4-HiHi, 3-Hi, 2-Lo,1-LoLo][7 - CHK_dis, 5 - Underflow,4 - HiHi, 3 - Hi, 2 - Lo, 1 - LoLo, 0 - Overflow]. В Sw_HMI_MSG используется только 1 байт для формирования сообщений. В Sw_SET_CHK_ACK старший байт используется для включения проверки канала и включения порогов, младший - для подтверждения сообщений, потом сравнением с байтом сообщений формируется звуковая сигнализация.
Вроде и экономия 1 тэга на слиянии байта подтверждения и байта включения проверки, но не слишком удобно получается при программировании HMI нужно помнить про смещение в 1 байт.
Нужно попробовать метод Петрова.
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 28 сен 2017, 14:13
- Имя: Артем
- Благодарил (а): 1 раз
Биты и байты в hmi alarms
Вот этот способ кажется самым красивым.petr2off писал(а): Есть еще 3 я возможность, которую Вы не упомянули. Называется структурные ТЭГи, из PLC идет слово, а в структурном тэге Вы имеете 16 переменных, У меня в структурном тэге даже несколько слов свернуты. Ну и стандартный alarm вполне нормально с ними работает.
Т.е. NDC01AP001 - это у меня структурный ТЭГ, который описывает насос. А скажем NDC01AP001.Sts_ON - признак того, что он включен.
Структурными тегами мы и до этого пользовались. Но как скормить такой тег в hmi alarms?
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Биты и байты в hmi alarms
Стандартный alarms кушает нормально. Элемент структурного ТЭГа - это обычный ТЭГ, который вполне вяжется с ним. Завтра для примера экранов накидаю.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Биты и байты в hmi alarms
Картинки, иллюстрируют использование структурных ТЭГов в alarm
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 28 сен 2017, 14:13
- Имя: Артем
- Благодарил (а): 1 раз
Биты и байты в hmi alarms
petr2off, большое спасибо за ответ. Я возьму этот способ на вооружение.
Но меня больше интересует как правильно работать с тегом NDB01CPЗ001_WST (меркер с адресом 103 из вашего примера) на стороне ПЛК в тиа портале 14. Alarm logging портальной wincc признает только биты входящие в теги типа word. Было бы неплохо, как в вашем примере, иметь структурный тег из 16 поименованных бит, а в HMI Alarms передавать вордовскую переменную с тем же адресом, что и у структурного тега.
Однако я не могу найти как сделать такой финт ушами.
Но меня больше интересует как правильно работать с тегом NDB01CPЗ001_WST (меркер с адресом 103 из вашего примера) на стороне ПЛК в тиа портале 14. Alarm logging портальной wincc признает только биты входящие в теги типа word. Было бы неплохо, как в вашем примере, иметь структурный тег из 16 поименованных бит, а в HMI Alarms передавать вордовскую переменную с тем же адресом, что и у структурного тега.
Однако я не могу найти как сделать такой финт ушами.
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Биты и байты в hmi alarms
Ну тут я на данный момент помочь не смогу. У меня такой проблемы нет, потому что на PLC у меня крутится ISAGRAF. И все срастается достаточно спокойно. Слово состояние аналоговой переменной, обрабатывается соответствующими ФБ и выставляются нужные биты. Т.е. на уровне PLC я с этими битами не работаю, я их тупо пихаю в Modbus регистры, а в HMI они уже подхватываются автоматически.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Биты и байты в hmi alarms
Зацените функции переноса данных Serialize/Deserialize, которые работают со структурами (Struct). Допустим есть тэг Petya типа Word, который пришел с панели. Нужно переместить биты из этого тэга в структуру Vasya, где каждый бит имеет свое имя. Функция Serialize выполняет этой действие.
Функция Deserialize выполняет обратное действие.
1. Можно к Petya добавить тэг Kolya типа Word, а в структуру Vasya добавить еще 16 бит. И эти функции будут перебрасывать сразу 32 бита, наращивать структуру можно сколь угодно.
2. Структура может содержать не только биты, но и другие типы, если это имеет смысл.
P.S. Вообще я ударно использовал эти функции, чтобы принять большое количество байт из шины CAN и затем разместить данные в структуры с удобным собственным именем и типом данных.
У вас нет необходимых прав для просмотра вложений в этом сообщении.