Опять "Разработчик"

Общие вопросы по оборудованию и программному обеспечению Компании ДЭП
Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 14 янв 2012, 03:02

В с_блоке использована функция
dep_DiscretRead(&DBlock0_out ,d_30CDE3,0);
При компиляции сообщение
"statp_c.c",22 Error[100]: Undeclared identifier: 'd_30CDE3'
Где объявляется этот идентификатор?
С уважением, Б.Гаврилов
Теплосеть г. Королев.

Равиль
Сообщения: 58
Зарегистрирован: 08 фев 2005, 14:48

Сообщение Равиль » 17 янв 2012, 15:14

На месте переменной d_30CDE3 должен быть номер читаемого дискрета. Похоже что вы просто скопировали использование функции dep_DiscretRead из исходных файлов созданных Разработчиком, а там номера дискретов задаются как глобальные переменные в одном из сгенерированных файлов.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 17 янв 2012, 16:40

Спасибо. Но где тогда будет название параметра?
С уважением, Б.Гаврилов

Теплосеть г. Королев.

Равиль
Сообщения: 58
Зарегистрирован: 08 фев 2005, 14:48

Сообщение Равиль » 17 янв 2012, 17:40

Там же, в сгенерированных Разработчиком файлах, есть соотвествие названия глобальной переменной ( d_30CDE3). В начале работы компонента считываются таблицы с парами номер-название параметра (таблица Din) и по этим парам и соотвествию устанавливается правильное значение глобальной переменной (d_30CDE3), равное номеру дискрета.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 18 янв 2012, 02:24

Прошу прощени, но я ничего не понял: где и как я должен задать имя параметра, которое отобразится в конфигурации компонента, и которому при конфигурировании задам номер дискрета в базе дискретов.
Я написал маленький С-блок, который проглатывается компиляторлом, но не имеет конфигурационных таблиц:

dep_DiscretRead(&DBlock0_out ,5,0);
vd1=DBlock0_out.value;
dep_DiscretWrite(6,vd1,FALSE,0);

Подскажите, как надо было бы написать.
С уважением, Б.Гаврилов

Теплосеть г. Королев.

vadim
Сообщения: 7
Зарегистрирован: 16 дек 2011, 16:46
Откуда: Компания ДЭП

Сообщение vadim » 26 янв 2012, 15:54

Чтобы в с-блоке использовать конфигурационные параметры, нужно придерживаться следующих правил:
1. С-блок должен вызываться из блока-диаграммы;
2. С-блок должен получать номера дискретов из блока-диаграммы через коннектор и писать в свои переменные;
3. В с-коде в качестве параметра функции dep_DiscretRead использовать переменные с-блока, которые через коннектор получают номера дискретов.

Например у Вас есть блок-диаграмма "Д" и с-блок "С". На панель "диаграмма" у "Д" добавьте элемент "Номер дискрета" и с-блок "С". Соедините "Номер дискрета" с терминалом с-блока "С". На панель "панель" с-блока "С" добавьте число и соедините его с терминалом коннектора (убедитесь что число настроено на вход). Далее в коде на панели "Диаграмма-С" с-блока используйте название псевдонима числа в качестве параметра функции dep_DiscretRead.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 27 янв 2012, 00:55

Спасибо, Vadim! Исе понятно, но беда в следующем:
У меня прлг7рамма управления насосами объета сч 10 группами насосов.
Для каждой группы вводятся 12 уставок. Итого 120 параметров. Изобразить на одной диаграмме их невозможно. Невозможно, также иметь с_блок со 120 терминалами. Прошу прощения, что сразу не написал об этом.
Скажите пожалуйста, Ваш вариант - единственный, или все таки можно обойтись одним толькоь с_блоком. Может где-то можно ввести определение номера параметра в виде, скажем, t_ABCDEF ? Аброкадабру ABCDEF готов составлять вручную

PS. Диаграмму можно разбить на 10-15 блоков, но так не хочется использовать этот некрасивый вариант..
С уважением, Б.Гаврилов

Теплосеть г. Королев.

vadim
Сообщения: 7
Зарегистрирован: 16 дек 2011, 16:46
Откуда: Компания ДЭП

Сообщение vadim » 30 янв 2012, 13:45

Можно создать с-блок который на вход получает номер первой уставки. В с-блоке создается цикл выполняющий одинаковые действия над всеми уставками. Номер очередной уставки получается инкрементом номера первой уставки.
На диаграмму нужно добавить 10 номеров дискретов и 10 копий с-блока и соединить каждый номер с соответствующим с-блоком.
В данном случае с-блок можно заменить блоком-диаграммой.

Предполагается что уставки одной группы расположены в возрастающем порядке рядом друг с другом. В конфигурации должно появиться 10 номеров уставок (начальный для каждой группы).

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 30 янв 2012, 15:10

Спасибо. Мысль мне понравилась.
С уважением, Б.Гаврилов

Теплосеть г. Королев.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 02 фев 2012, 10:30

В моем проекте много блоков, необходима разбивка по библиотекам. В какой-то момент сообщение: "Неправильное размещенрие блоков"
Перерыл help, ничего не нашел.
Какие же требования к размещению блоков?
Попутно - как определить до компиляции, что lib слишком велика?
С уважением, Б.Гаврилов

Теплосеть г. Королев.

vadim
Сообщения: 7
Зарегистрирован: 16 дек 2011, 16:46
Откуда: Компания ДЭП

Сообщение vadim » 02 фев 2012, 10:42

По поводу сообщения "Неправильное размещение блоков". Библиотеки не должны использовать блоки друг друга в обоих направлениях. То есть если блоки одной библиотеки используют блоки другой, то ничего страшного в этом нет. Но при этом, если хотя бы один блок второй библиотеки использует хотя бы один блок из первой, то вы увидите данное сообщение.
Ответ на второй вопрос - никак. Определить, что lib слишком велика может только компилятор во время компиляции.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 05 мар 2012, 03:59

При запуске контроллера D-182 с компонентом PWB2, контроллкр свалился в минимальный
режим с ошибкой:
1 ##Îøèáêà çàãðóçêè áèáëèîòåêè 52736 PWB2_0 01.01.1980 8:09:26:818 0106
2 Îøèáêà çàãðóçêè áèáëèîòåêè 44816 PWB2_0 LibID 01.01.1980 8:09:26:819 0606
3 Ôàòàëüíàÿ îøèáêà êîìïîíåíòà 34480 PWB2_0 CompID 01.01.1980 8:09:26:819 0601
Состояние памяти:
Свободно в РПЗУ 193,15;
ОЗУ 244,0
Под таблиы 28,12 из 32.
Вопрос: что такое ошибка 0106 и в чем причина отказа?
С уважением, Б.Гаврилов

Теплосеть г. Королев.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 08 мар 2012, 06:17

При сборке проекта регулярно получаю сообщение:
"не могу открыть файл С:\out\00020024\out.txt"
Выбор у меня один - остановить сборку, хотя программа сообщает "Остановлено пользователем"
После этого запустить сборку невозможно, приходится перезагружать "Разработчик". Иногда после перезагрузки сборка проходит, иногда снова "Не могу..."
ПРошу объяснить, что это значит?
С уважением, Б.Гаврилов

Теплосеть г. Королев.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 08 мар 2012, 06:24

Почему сборка каждый раз начинается сначал, зачем заново компилируются блоки и библиотеки, которых изменения не касаются?
У меня сборка длится минут 5-7, даже если я изменил одну букву в одном блоке.
С уважением, Б.Гаврилов

Теплосеть г. Королев.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 08 мар 2012, 08:33

Наконец получил "ОК", но
LibIni.hex - 16443
LibIni1.hex - 24389
Как же можно уменьшить размер библотеки?
С уважением, Б.Гаврилов

Теплосеть г. Королев.

Равиль
Сообщения: 58
Зарегистрирован: 08 фев 2005, 14:48

Сообщение Равиль » 11 мар 2012, 13:07

На всякий случай хочу заметить, что размер библиотеки проверяется в программе "Конфигуратор" в меню Администратор/Копирование файлов. Если размер библиотеки инициализации превышает допустимый (8192 байта), то нужно разбивать компонент на более мелкие компоненты.

Аватара пользователя
Б.Е.Г.
Сообщения: 169
Зарегистрирован: 20 май 2009, 07:48
Откуда: Королев

Сообщение Б.Е.Г. » 12 мар 2012, 05:24

Равиль, спасибо, но:
1. Программа - одно целое, и ни одна часть ее не может работать без остальных. Посоветуйте, пожалуйста: как можно связать части, используя общие массивы данных.
2. Вы ответили на последний вопрос, а я задал несколько вопросов, на которые нет ответа.
С уважением, Б.Гаврилов

Теплосеть г. Королев.

Равиль
Сообщения: 58
Зарегистрирован: 08 фев 2005, 14:48

Сообщение Равиль » 12 мар 2012, 16:06

0106 - расшифровывается как ##Ошибка загрузки библиотеки. Аргумент - номер библиотеки. Причины могут быть разные - например отсутствие этой библиотеки в контроллере.
С сообщением "не могу открыть файл ..." не сталкивался, ничего сказать не могу.
Действительно в Разработчике сборка всегда начинается сначала - это особенность программы.
Два компонента можно связать только через дискреты, аналоги или счетчики.