Всем здрасьти!
Добрался я наконец до проекта из долгого ящика. Написал программку для ОВЕН ПЛК-110...в процессе написания столкнулся с такой сложностью (скорее не сложностью а неудобством) чтобы вызвать переменную из другого ФБ необходимо набирать например PLC_PRG.FB1.tag1 (очень много букв).
Может есть способ как то убрать упоминание основной программы?
Еще второй вопрос:
необходимо разбить слово побитно, для этого написал небольшой блок и использую его но при компилляции появляется ошибка :
вроде не должна быть, а есть.
пробовал hmi_start переносить и во входные переменные - безрезультатно.
как быть то? не конечно можно создать глобальные переменные и пользоваться ими, но это же неудобно...да и неинтересно...
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
тонкости CoDeSys
-
- эксперт
- Сообщения: 1172
- Зарегистрирован: 14 ноя 2013, 20:35
- Имя: Анатолий Сергеевич
- Страна: Россия
- город/регион: Башкортостан
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
-
- почётный участник форума
- Сообщения: 5632
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 600 раз
- Поблагодарили: 756 раз
тонкости CoDeSys
1) Во-о-от! Для этого люди придумали "алиасы", но как с ними в CoDeSys дело обстоит, не скажу. Просто не знаю.
2) Это д.б., наверно, входная-выходная переменная.
2) Это д.б., наверно, входная-выходная переменная.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- эксперт
- Сообщения: 1172
- Зарегистрирован: 14 ноя 2013, 20:35
- Имя: Анатолий Сергеевич
- Страна: Россия
- город/регион: Башкортостан
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
тонкости CoDeSys
1. Если под алиасом вы имели ввиду сделать переменную еще одну и присвоить ей значение элемента структурного тэга то этот вариант мне не нравится - не люблю много переприсвоений, сам то разберусь, а вот те кто придет после меня - исплюются
2.по сути эта переменная в целевом ФБ только читается, потому вход/выход не поможет. Причем компилятор не ругается на присвоение биту 0...описание разное потому что экспериментировал. Без plc_prg та же самая ошибка. Удаляю присвоение биту1 ошибка переходит на бит2.
Видимо отвык от кодесиса сильно)))
-
- почётный участник форума
- Сообщения: 5632
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 600 раз
- Поблагодарили: 756 раз
тонкости CoDeSys
Да, если алиасы изначально не предусмотрены в структуре переменных системы, как в RSLogix например, то выход один - объявлять глобальную с удобоваримым именем и значением многокилометрово_именной локальной.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- освоился
- Сообщения: 277
- Зарегистрирован: 28 авг 2014, 09:30
- Имя: Воднев Александр Васильевич
- Страна: РФ
- город/регион: Томск
- Благодарил (а): 21 раз
- Поблагодарили: 28 раз
тонкости CoDeSys
Простите, но судя по декларации, у Вас hmi_start - это внутренняя переменная ФБ. Она на то и внутренняя для того, чтобы внешне не возможно было изменить, это постулат CodeSys. Ну, ежели хотите на нее влиять из вне, то делайте ее входной переменной.
-
- эксперт
- Сообщения: 1172
- Зарегистрирован: 14 ноя 2013, 20:35
- Имя: Анатолий Сергеевич
- Страна: Россия
- город/регион: Башкортостан
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
тонкости CoDeSys
Я знаю, так и задумывалось...Эта конструкция и в сименсе и в шнейдере работает, а вот кодесис оказывается против))))
Пробовал и во входящие ее переносить, но компилятор все равно ругается на эту конструкцию -переменная не имеет доступа по записи.
Неудобство решил с помощью глобальной переменной, которой присваиваю значение полученного от панели слова. А вместо булевой переменной в фб обращаюсь к нужному биту глобальной переменной...
А вот насчет постулата
Одна тонкость освоена!
-
- освоился
- Сообщения: 277
- Зарегистрирован: 28 авг 2014, 09:30
- Имя: Воднев Александр Васильевич
- Страна: РФ
- город/регион: Томск
- Благодарил (а): 21 раз
- Поблагодарили: 28 раз
тонкости CoDeSys
На волне эйфории от полученной благодарности хочу предложить еще одну глупость:
А ежели Вам просто нарисовать ФБ с функцией оформления команд полученных от панели оператора и обозвать его, например, HMI?
Организовать у него в качестве входной переменной cmd_word, а на выход поставить различные mixer_start, pump_start и прочие, в том числе и просто start. Свое значение все эти старты будут получать от cmd_word только в теле ФБ HMI, а читаться будут любым модулем программы.
Глупость, конечно. Но, как мне кажется, со смыслом.
А ежели Вам просто нарисовать ФБ с функцией оформления команд полученных от панели оператора и обозвать его, например, HMI?
Организовать у него в качестве входной переменной cmd_word, а на выход поставить различные mixer_start, pump_start и прочие, в том числе и просто start. Свое значение все эти старты будут получать от cmd_word только в теле ФБ HMI, а читаться будут любым модулем программы.
Глупость, конечно. Но, как мне кажется, со смыслом.
-
- эксперт
- Сообщения: 1172
- Зарегистрирован: 14 ноя 2013, 20:35
- Имя: Анатолий Сергеевич
- Страна: Россия
- город/регион: Башкортостан
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
тонкости CoDeSys
Боюсь даже представить что для вас серьезные вещи))) у меня полпрограммы на таких конструкциях.