1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

тонкости CoDeSys

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

тонкости CoDeSys

Сообщение megavolt86 »

Всем здрасьти!
Добрался я наконец до проекта из долгого ящика. Написал программку для ОВЕН ПЛК-110...в процессе написания столкнулся с такой сложностью (скорее не сложностью а неудобством) чтобы вызвать переменную из другого ФБ необходимо набирать например PLC_PRG.FB1.tag1 (очень много букв).
Может есть способ как то убрать упоминание основной программы?

Еще второй вопрос:
необходимо разбить слово побитно, для этого написал небольшой блок и использую его но при компилляции появляется ошибка :
1.bmp
вроде не должна быть, а есть.
2.png
пробовал hmi_start переносить и во входные переменные - безрезультатно.
3.png
как быть то? не конечно можно создать глобальные переменные и пользоваться ими, но это же неудобно...да и неинтересно...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
:ext_secret:

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5632
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 600 раз
Поблагодарили: 756 раз

тонкости CoDeSys

Сообщение Ryzhij »

1) Во-о-от! Для этого люди придумали "алиасы", но как с ними в CoDeSys дело обстоит, не скажу. Просто не знаю.
2) Это д.б., наверно, входная-выходная переменная.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

тонкости CoDeSys

Сообщение megavolt86 »

Ryzhij писал(а): 1) Во-о-от! Для этого люди придумали "алиасы", но как с ними в CoDeSys дело обстоит, не скажу. Просто не знаю.
2) Это д.б., наверно, входная-выходная переменная.
1. Если под алиасом вы имели ввиду сделать переменную еще одну и присвоить ей значение элемента структурного тэга то этот вариант мне не нравится - не люблю много переприсвоений, сам то разберусь, а вот те кто придет после меня - исплюются :crazy0to:
2.по сути эта переменная в целевом ФБ только читается, потому вход/выход не поможет. Причем компилятор не ругается на присвоение биту 0...описание разное потому что экспериментировал. Без plc_prg та же самая ошибка. Удаляю присвоение биту1 ошибка переходит на бит2.

Видимо отвык от кодесиса сильно)))
:ext_secret:

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5632
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 600 раз
Поблагодарили: 756 раз

тонкости CoDeSys

Сообщение Ryzhij »

Да, если алиасы изначально не предусмотрены в структуре переменных системы, как в RSLogix например, то выход один - объявлять глобальную с удобоваримым именем и значением многокилометрово_именной локальной.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

vodav
освоился
освоился
Сообщения: 277
Зарегистрирован: 28 авг 2014, 09:30
Имя: Воднев Александр Васильевич
Страна: РФ
город/регион: Томск
Благодарил (а): 21 раз
Поблагодарили: 28 раз

тонкости CoDeSys

Сообщение vodav »

Простите, но судя по декларации, у Вас hmi_start - это внутренняя переменная ФБ. Она на то и внутренняя для того, чтобы внешне не возможно было изменить, это постулат CodeSys. Ну, ежели хотите на нее влиять из вне, то делайте ее входной переменной.
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

тонкости CoDeSys

Сообщение megavolt86 »

vodav писал(а): hmi_start - это внутренняя переменная ФБ
Я знаю, так и задумывалось...Эта конструкция и в сименсе и в шнейдере работает, а вот кодесис оказывается против))))
Пробовал и во входящие ее переносить, но компилятор все равно ругается на эту конструкцию -переменная не имеет доступа по записи.
Неудобство решил с помощью глобальной переменной, которой присваиваю значение полученного от панели слова. А вместо булевой переменной в фб обращаюсь к нужному биту глобальной переменной...

А вот насчет постулата :thankyou:



Одна тонкость освоена!
:ext_secret:
Аватара пользователя

vodav
освоился
освоился
Сообщения: 277
Зарегистрирован: 28 авг 2014, 09:30
Имя: Воднев Александр Васильевич
Страна: РФ
город/регион: Томск
Благодарил (а): 21 раз
Поблагодарили: 28 раз

тонкости CoDeSys

Сообщение vodav »

На волне эйфории от полученной благодарности хочу предложить еще одну глупость:
А ежели Вам просто нарисовать ФБ с функцией оформления команд полученных от панели оператора и обозвать его, например, HMI?
Организовать у него в качестве входной переменной cmd_word, а на выход поставить различные mixer_start, pump_start и прочие, в том числе и просто start. Свое значение все эти старты будут получать от cmd_word только в теле ФБ HMI, а читаться будут любым модулем программы.
Глупость, конечно. Но, как мне кажется, со смыслом.
Аватара пользователя

Автор темы
megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

тонкости CoDeSys

Сообщение megavolt86 »

vodav писал(а): Глупость, конечно.
Боюсь даже представить что для вас серьезные вещи))) у меня полпрограммы на таких конструкциях.
:ext_secret:
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»