PDA

Просмотр полной версии : Нетипичный проект на СПК207



cen_turion
27.11.2014, 11:05
Добрый день! Есть задача: написать проект опроса датчиков по Модбас , с дальнейшей обработкой данных, под СПК207. Проект нетипичный, даже эксклюзивный, хотя особой сложности не представляет. Мог бы я непонятные мне вещи напрямую спросить у техподдержки, но решил, что данная тема будет интересна ещё кому-либо. Ну стартуем!:cool:
Итак дано: n-ое кол-во датчиков( modbus RTU , с картой регистров), три линии (в дальнейшем возможно добавится ещё) на которых они весят. Нужно опрашивать датчики (считывать определённые регистры), выводить текущую информацию на экран, тревоги выводить и сохранять и кое-чем управлять.Далее подробно.

capzap
27.11.2014, 11:13
наверное тут больше подходит определение: дорогое удовольствие, а не нетипичный проект, датчики с модбас явно не бюджетный вариант,хватит ли у панели столько интерфейсов,чтоб подключить n-ое количество, читали эту тему www.owen.ru/forum/showthread.php?t=9854

ASo
27.11.2014, 11:15
Скорость опроса датчиков и их количество - критичны?
Скажем так, протянет ли одна линия по скорости и числу адресов, если ее разветвить?

cen_turion
27.11.2014, 11:24
И так согласно протоколу обмена с контроллером верхнего уровня,который прилагается к руководству по эксплуатации на датчик, будем считывать используя команду 04.
Первый регистр ,который нам нужен, расположен по адресу 0х02. Но! Он нам нужен не весь,а лишь младший байт, а точнее четыре первые биты младшего байта. Благо в CODESYS 3 есть такая возможность.Реализацию смотрите на рисунке15456
Вопрос: всё ли правильно я сделал?

capzap
27.11.2014, 11:33
всёравно в именах переменных цифры используете, можно было ворд пропустить через маску, а полученн переменную использовать как битовое значение через точку_разряд

cen_turion
27.11.2014, 11:33
наверное тут больше подходит определение: дорогое удовольствие, а не нетипичный проект, датчики с модбас явно не бюджетный вариант,хватит ли у панели столько интерфейсов,чтоб подключить n-ое количество, читали эту тему www.owen.ru/forum/showthread.php?t=9854
Не соглашусь. Сейчас микрухи под Модбас дешевеют и соответственно приборы под них. Не буду перечислять все преимущества цифры перед аналогом , Вы их и так знаете. На линии до 32 датчика,как положено. В реале меньше. Расстояния небольшие.Дальше в теме буду раскрывать ...

cen_turion
27.11.2014, 11:35
Скорость опроса датчиков и их количество - критичны?
Скажем так, протянет ли одна линия по скорости и числу адресов, если ее разветвить?
Тут имеет место только одна топология- шина. Никаких ветвлений.

capzap
27.11.2014, 11:39
с декабря овен поднимает цены на продукцию, это видимо как раз связано с удешевлением микросхем)))

murdemon
27.11.2014, 11:44
готов помочь с нетипичным проектом удаленно по TeamViewer за небольшое вознаграждение dmitriy.murashov@automation-engineering.ru

cen_turion
27.11.2014, 11:55
В продолжении темы...
Дальше интереснее. Считываем регистр 0х04,но...Нам нужны старший и младший байт. Но тут проблема,потому что мы можем инициализировать переменные либо под весь регистр ,либо под биты, но не под байт. Насколько помню в Codesys 2 , в конфигурации ПЛК, можно было подбирать любые варианты подобно конструктору.
Выход видится в следующем:
1) Опрашиваем регистр- переменная А;
2) делаем преобразование REAL >> BOOL . Получаем число в двоичной форме;
3) с помощью побитового сдвига и считывание маской выделяем два числа А1 и А2;
4) преобразуем BOOL>> WORD;
У кого какие мысли?

capzap
27.11.2014, 11:59
бред, реал то бол будет выдавать только единицу и ноль, тут слово нужно логически умножать с маской, чтоб получить биты, байты, слова

ЗЫ регистр это ворд, а ни как не реал

cen_turion
27.11.2014, 11:59
готов помочь с нетипичным проектом удаленно по TeamViewer за небольшое вознаграждение dmitriy.murashov@automation-engineering.ru
Дмитрий,сами такие :)
Просто если занимаешься только одним и тем же , то всё встаёт на поток. А так : то там на этом напиши, то тут вот это наладь- волосы дыбом и выпадают:D Но таковы реали:" Хочешь жить- умей вертеться.Хочешь хорошо жить- вертись втройне!!!"

cen_turion
27.11.2014, 12:18
бред, реал то бол будет выдавать только единицу и ноль, тут слово нужно логически умножать с маской, чтоб получить биты, байты, слова

ЗЫ регистр это ворд, а ни как не реал
действительно регистр- WORD, байт-BYTE. почему то думал ,что надо преобразовывать из десятичного отображения в двоичное!:confused:
По поводу умножения- оно побитовое, а не логическое!?

cen_turion
27.11.2014, 12:19
всёравно в именах переменных цифры используете, можно было ворд пропустить через маску, а полученн переменную использовать как битовое значение через точку_разряд
можно на примере ?

capzap
27.11.2014, 12:24
result:=wValue AND 16#F;
bUno:=result.0;
bDuo:=result.1 OR result.2;
bTre:=NOT result.3;

cen_turion
27.11.2014, 12:56
Я чего-то не понял. result здесь структура?
bUno:=result.0;
bDuo:=result.1 OR result.2;
bTre:=NOT result.3 - это инициализация полей структуры?

cen_turion
27.11.2014, 13:12
result:=wValue AND 16#F;
что нам даёт? ведь здесь маска накладывается на всё?

Yegor
27.11.2014, 13:32
Я чего-то не понял. result здесь структура?Здесь точка — оператор поразрядного доступа к целочисленному типу, а не селектор полей структуры.


result:=wValue AND 16#F;
что нам даёт? ведь здесь маска накладывается на всё?Если result и wValie двухбайтовые, то старший байт таким способом затирается нулями.

capzap
27.11.2014, 13:45
не только старший, но и в младшем старшие четыре разряда,

cen_turion
27.11.2014, 14:03
Есть где-либо подробное описание данного оператора? думал что это оператор области видимости или селектор полей структуры...
По поводу result:=wValue AND 16#F; разобрался. Просто отвлекаюсь постоянно.
То как я объявил переменные "D0_1.1" ,может быть конфуз?

cen_turion
27.11.2014, 14:32
В общем я более менее разобрался , буду практиковать,что получится в итоге отпишу.
Идём дальше. Теперь немного о "железе". Если имеем на ПЛК выход RS-232, то можно ли используя переходник RS-232/RS-485 повесить на него датчики RS-485? Переходник обязательно ОВЕН или можно любой?

cen_turion
27.11.2014, 14:40
Теперь по Визуализации...
В планах создание мнемосхемы с приблизительным расположением датчиков.При нажатии на датчик переходим на визуализацию состояния датчика. Все датчики идентичны. Думаю создать одно окно визуализации на все приборы, но при выборе датчика на мнемосхеме, в открывшемся окне визуализации подгружались соответствующие данные. Только как это сделать? Писать код? В конфигурациях не прописывается? Припоминаю,что можно вроде скрипта написать для кнопок или нет? Или такой возможности нет и создавать однотипы под всех!?

petera
27.11.2014, 15:27
Есть где-либо подробное описание данного оператора? думал что это оператор области видимости или селектор полей структуры...
В справке много чего есть...
15468

cen_turion
27.11.2014, 16:10
Спасибо.Упустил из виду

SBER
27.11.2014, 18:09
В общем я более менее разобрался , буду практиковать,что получится в итоге отпишу.
Идём дальше. Теперь немного о "железе". Если имеем на ПЛК выход RS-232, то можно ли используя переходник RS-232/RS-485 повесить на него датчики RS-485? Переходник обязательно ОВЕН или можно любой?

Если 232 обычный, а не debug то можно повесить любой переходник. Овеновские висят годами без проблем. Остальные — зависит от производителя.

SBER
27.11.2014, 18:15
Теперь по Визуализации...
В планах создание мнемосхемы с приблизительным расположением датчиков.При нажатии на датчик переходим на визуализацию состояния датчика. Все датчики идентичны. Думаю создать одно окно визуализации на все приборы, но при выборе датчика на мнемосхеме, в открывшемся окне визуализации подгружались соответствующие данные. Только как это сделать? Писать код? В конфигурациях не прописывается? Припоминаю,что можно вроде скрипта написать для кнопок или нет? Или такой возможности нет и создавать однотипы под всех!?

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

cen_turion
28.11.2014, 13:24
SBER, спасибо! Вот по поводу присвоение переменной.Вы имели в виду в "Визуализации"-"Свойства"-"Inputconfiguration"-"OnMouseClick"-"Изменить отображаемую визуализацию"-"Присвоить"-"Присвоить значения" ????

cen_turion
28.11.2014, 14:48
или так : у визуализации ,которая будет выводиться, есть свой набор переменных в полях текста,а когда кликаем по объекту мнемосхемы, также выполняется код присвоения переменным визуализации, нужных значений. Так?

SBER
28.11.2014, 18:21
SBER, спасибо! Вот по поводу присвоение переменной.Вы имели в виду в "Визуализации"-"Свойства"-"Inputconfiguration"-"OnMouseClick"-"Изменить отображаемую визуализацию"-"Присвоить"-"Присвоить значения" ????

Именно так. Экран для отображения датчика делаем один. Отображаемое значение меняем в зависимости от присвоенной переменной церез цикл ли IF если вы для хранения показаний датчиков не используете массивы.

cen_turion
02.12.2014, 14:02
Добрый день!
Кто подключал СПК207 к ПЛК100? Возможно ли сделать это по МODBUS, а именно через разъём под RS232?
Требуется добавить ветку RS-485 с независимым от СПК207 опросом и реализация дискретных входов-выходов. Можно было и модуль ввода-вывода повесить , если не первое условие. Сейчас читаю ветку с подключением к СПК207 МВ-ек. Но интересует,есть ли уже испытавшие? Ветку такую поиском не нашёл. Ткните если есть.

cen_turion
02.12.2014, 14:11
ПЛК100 опрашивает датчики,как мастер.СПК207 опрашивает его уже как слейв. Какой регистр надо считать у ПЛК100 и какой командой?

cen_turion
02.12.2014, 15:16
Разобрался и с этим вопросом по аналогии с панелью ИП320. Интересно, а возможен такой случай, чтобы не использовать промежуточные переменные, а передавать данные напрямую от датчика к ведущему контроллеру СПК207 ?

Yegor
03.12.2014, 07:41
У вас два интерфейса с абстрагированием в регистры по разным адресам оперативной памяти. Как минимум копировать регистры модулей в регистры для СПК всё равно придётся.

RV9WFJ
03.12.2014, 08:14
Мир сговорился :-) Вчера один клиент 3 часа мне доказывал что простой проброс рулит. Его даже не смущало что у него 2 мастера получается на шине. Если вам необходимо много данных прокинуть через ПЛК100 то просто посмотрите в сторону указателей (POINTER) и жизнь станет легче.

cen_turion
03.12.2014, 12:51
Ну да! Я тоже предполагал, что дело с адресным пространством в памяти. Работа с указателями классная идея, но неее :)
Я вот тут про массивы в ST пытался осилить, но чего-то Help мне не помощь!!! В СИ я себе представляю, а вот тут не очень.

amn
03.12.2014, 13:25
Если вам необходимо много данных прокинуть через ПЛК100 то просто посмотрите в сторону указателей (POINTER) и жизнь станет легче.

Тут сильно не рекомендуют пользоваться указателями
http://www.owen.ru/forum/showthread.php?t=12362&p=153876&viewfull=1#post153876

cen_turion
03.12.2014, 14:28
Указателями и на СИ многие не рекомендуют пользоваться.Ибо лезешь в святая святых-память!!!:cool:
Ну и с динамическими массивами, тоже проблемки по неосторожности. Если код правильный, то бояться не надо. Облегчает жизнь железу.

Yegor
03.12.2014, 19:02
Указателями и на СИ многие не рекомендуют пользоваться.Вздор. Си без указателей это не Си. Вот в кодесисе — другой вопрос, т.к. в стандарте 61131 про указатели ни слова, и они являются расширением. К сожалению, реализованы довольно криво: 1) оператор присваивания (функция ADR) игнорирует тип операнда, хотя оператор разыменования (^) тип сохраняет; 2) роняют 110-е ПЛК при доступе к участку памяти, который используется функцией SysComRead (мистика, т.к. семантически равнозначный доступ через SysMemCpy работает).

Валенок
03.12.2014, 19:16
А можно про п.2 поподробнее если не в тягость

Yegor
03.12.2014, 20:00
Ну вот недавно библиотеку выкладывал: http://owen.ru/forum/showthread.php?t=19435

Так не получается:

i := i + SysComRead(portHandle, ADR(rcvBuf) + i, rcvBuf[10] - i + 11 + 3, 0);
(* ... *)
ptrToReal := ADR(rcvBuf) + 14;
someRealVar := ptrToReal^; (* Именно на этой строке контроллер виснет и перезагружается — даже отладчиком триста раз прошёлся *)Забавно вот что: 1) если строку закомментировать, то в кодесисе можно наблюдать правильное значение под указателем (зависает именно на разыменовании); 2) если убрать SysComRead и забивать rcvBuf какой-нибудь ерундой вручную, то указатель тоже нормально разыменовывается.

А вот так работает сразу без проблем:
i := i + SysComRead(portHandle, ADR(rcvBuf) + i, rcvBuf[10] - i + 11 + 3, 0);
(* ... *)
SysMemCpy(ADR(someRealVar ), ADR(rcvBuf) + 14, SIZEOF(someRealVar));Я с этим уже сталкивался пару лет назад в похожем случае (http://www.owen.ru/forum/showthread.php?t=13601), но тогда не упомянул об этой проблеме, т.к. библиотеку выложил увидев значение под указателем в кодесисе, а разыменования в примере нет. Когда проблема всплыла чуть позже при интеграции библиотеки в реальный проект, я забыл обновить тему.

В первом случае речь о ПЛК110-32 2013 г., а во втором — о ПЛК160 2011 г.

Валенок
03.12.2014, 22:57
)))) Никаких загадок, товарищ. Ключевое слово - "выравнивание"

amn
03.12.2014, 22:58
Yegor, а как насчет выравнивания?
Мне кажется, чтобы правильно работала такая конструкция someRealVar := ptrToReal^; размер переменных rcvBuf и someRealVar должен быть кратен 4 байтам. У Вас так или нет?

Опередили :)

Валенок
03.12.2014, 23:02
Поправлю. Не размер, а содержимое в ptrToReal. Обращение к real/dword/ФБ/struct через ^ - только по адресу кратному 4.

Yegor
04.12.2014, 06:21
Если дело в выравнивании, то почему работает когда я убираю SysComRead?

Забейте. Видимо, адрес указателя в экспериментах зависел от SysComRead. Да, дело в выравнивании. Жесть какая-то. Толку от таких указателей?

Как бы ни было, спасибо.

cen_turion
15.12.2014, 16:42
Приветствую всех! Продолжаю свой проект. Конфигурация прошла успешно. Ну пока всё выглядит именно так:). Далее пошла визуальная составляющая. У датчика есть 4 состояния: авария, порог 1, порог 2 и "неработа". Честно для меня не ясно отличия первого и последнего, но не буду упрощать ибо не дано сея право мне :) Планировалось на небольшой схемке объекта накидать "кружков-пяточков" и завязать состояние датчика с ними, а именно менять цвет. Но у "пяточков" всего два возможных цвета: норм и тревога. Так как тут быть?! Ну я нашёл 2 выхода. Первое объединить порог1 и порог2 как тревожный цвет. Авария и "неработа", как отсутствие заливки. А отсутствие порогов,аварии и "неработы" как нормальная заливка. В переменных, отвечающих за заливку, вместо переменной указать условие.Пример: имеем две переменные состояния А и В,то для заливки имеем "A AND B". Можно ли сделать так? Каков синтаксис? Нужны ли по краям скобки? Какие ограничения? Я записал,компилятор не ругнулся, но как говориться....
Есть второй вариант, с использование изображений, создания пул изображений. Но это всё влечёт лишние переменные(память). Да и "пяточки" такие мелкие,ещё в них картинку пихать!
У кого есть какие варианты решения сей проблемы?
Как я уже упомянул всё это чисто для наглядности. Для подробной информации по датчикам, при нажатии на "пяточки", будет открываться другое окно визуализации, с загрузкой параметров датчика.

RV9WFJ
15.12.2014, 21:39
А ларчик то проще открывается - вам необходимо не цвет тревоги использовать а цвет заливки. И передавать туда значение соответствующее цвету только в формате c прозрачностью.

cen_turion
16.12.2014, 11:15
Вечером смотрел этот вариант.Будет создаваться переменная DWORD и ей присваиваться значения цвета в ходе ветвления IF. Значения цвета в формате RGB. А именно 16#00RRGGBB. Или конкретно, вот такой цвет "Военно-воздушный синий" есть 16#005D8AA8 :)

cen_turion
16.12.2014, 11:21
Что можно посмотреть по созданию однотипных объектов с их данными? Т.е если будет 100 одинаковых датчиков,чтобы не вбивать всё от руки!

RV9WFJ
16.12.2014, 11:36
Структуры, массивы и циклы посмотрите в ST;-)

cen_turion
22.12.2014, 11:35
Доброго дня!
Имеется некоторый набор переменных D_1_1, D_1_2, D_1_3, D_1_4, D_1_5, D_1_6 типа WORD. Рассматриваем биты каждой переменной. Например "D_1_1.1" Допустим представляем как массив: D_1:ARRAY[1..6] OF WORD
Теперь как в программе обратиться к элементам через цикл FOR!?:confused:
Пробовал напрямую: FOR i:=1 TO 6 DO
IF(D_1[i].0 AND D_1[i].3) THEN
color:=16#66FF00;
END_IF
END_FOR
Компилятор матерился во всю,да и я сам понял что тут не всё так просто.
Согласно справки есть функция "CheckBounds"."Для обеспечения доступа к элементам массива при выполнении программы в приложении должна быть доступна функция CheckBounds." НУ добавил я её, а дальше что делать не пойму! Куда, что !?

RV9WFJ
22.12.2014, 12:59
ARRAY[1..6,0..7] OF BOOL попробуйте

capzap
22.12.2014, 13:22
Доброго дня!
Имеется некоторый набор переменных D_1_1, D_1_2, D_1_3, D_1_4, D_1_5, D_1_6 типа WORD. Рассматриваем биты каждой переменной. Например "D_1_1.1" Допустим представляем как массив: D_1:ARRAY[1..6] OF WORD
Теперь как в программе обратиться к элементам через цикл FOR!?:confused:
Пробовал напрямую: FOR i:=1 TO 6 DO
IF(D_1[i].0 AND D_1[i].3) THEN
color:=16#66FF00;
END_IF
END_FOR
Компилятор матерился во всю,да и я сам понял что тут не всё так просто.
Согласно справки есть функция "CheckBounds"."Для обеспечения доступа к элементам массива при выполнении программы в приложении должна быть доступна функция CheckBounds." НУ добавил я её, а дальше что делать не пойму! Куда, что !?
может из этого проекта что то можно использовать http://www.owen.ru/forum/showthread.php?t=15455&p=142016&viewfull=1#post142016

Yegor
22.12.2014, 13:36
Компилятор матерился во всюВы сообщения конкретные называйте. У меня подобный код компилируется без проблем.

cen_turion
22.12.2014, 13:36
Спасибо! Как всегда помогли ;) Почему, то в теле цикла FOR значение " i " выбегает за значение " 6 " и устанавливается в " 7 " , хотя по умолчанию "0"( эмуляция). Надо ли использовать "CheckBounds"? Как это работает? Отдельно создалось "CheckBounds(FUN)", теперь в основной "PLC_PRG" её вызываем?

GoodLuck
22.12.2014, 13:45
Доброго дня!
Имеется некоторый набор переменных D_1_1, D_1_2, D_1_3, D_1_4, D_1_5, D_1_6 типа WORD. Рассматриваем биты каждой переменной. Например "D_1_1.1" Допустим представляем как массив: D_1:ARRAY[1..6] OF WORD
Теперь как в программе обратиться к элементам через цикл FOR!?:confused:
Пробовал напрямую: FOR i:=1 TO 6 DO
IF(D_1[i].0 AND D_1[i].3) THEN
color:=16#66FF00;
END_IF
END_FOR
Компилятор матерился во всю,да и я сам понял что тут не всё так просто.
Согласно справки есть функция "CheckBounds"."Для обеспечения доступа к элементам массива при выполнении программы в приложении должна быть доступна функция CheckBounds." НУ добавил я её, а дальше что делать не пойму! Куда, что !?

Какие именно ошибки выдает компилятор? У меня этот код никаких ошибок не выдает.

GoodLuck
22.12.2014, 13:48
Почему, то в теле цикла FOR значение " i " выбегает за значение " 6 " и устанавливается в " 7 " , хотя по умолчанию "0"( эмуляция).

Все правильно работает, так и должно быть.

cen_turion
22.12.2014, 13:51
------ Компиляция : Приложение: Device.Application -------
типизировать код...
[ERROR] prob_1: Visualization [Device: Plc Logic: Application](ID элемента 0): C0032: Невозможно конвертировать тип 'ARRAY [1..6] OF DWORD' в тип 'ANY_NUM'
Компиляция завершена -- 1 ошибок, 0 предупреждений

cen_turion
22.12.2014, 13:51
сейчас переписал по новой и всё заработало :mad:

cen_turion
22.12.2014, 13:56
Все правильно работает, так и должно быть.
ведь индекс "i" ограничен шестью? почему устанавливается в "7"!? По крайней мере так отображается дефолтное значение в таблице переменных

GoodLuck
22.12.2014, 14:07
ведь индекс "i" ограничен шестью? почему устанавливается в "7"!? По крайней мере так отображается дефолтное значение в таблице переменных
Цикл выполняется до тех пор, пока i<=6. Как только i становится равным 7 работа цикла на этом прекращается.
Непонятно, что вы подразумеваете под "дефолтное значение"? i=7 до старта программы?

cen_turion
22.12.2014, 14:15
всё, спасибо, разобрался!
да когда запускаешь эмуляцию, значение "i" в таблице переменных стоит "7". Хотя программа ещё ни разу не выполнялась! Ладно! Не важно!

cen_turion
22.12.2014, 14:17
может из этого проекта что то можно использовать http://www.owen.ru/forum/showthread.php?t=15455&p=142016&viewfull=1#post142016
спасибо, посмотрю! ну что-то мне не хочется связываться с указателями. Боюсь запутаться! Но рассмотреть такой вариант всё равно интересно

cen_turion
29.12.2014, 11:12
Добрый день!
В продолжении работы с визуализацией возникла необходимость следующих действий. Имеется общий план расположения датчиков. Датчики отображены,допустим, как кружочки. При клике на них, открывается окно визуализации с подробной информацией. Как перейти на другую визуализацию я решил через Inputconfiguration>OnMouseClick>Изменить отображаемую визуализацию. У визуализации с подробной инфой есть свои переменные, которым будет присваиваться значения датчиков, при смене визуализаций. Я решил использовать для этой цели Inputconfiguration>OnMouseClick>Выполнить ST-код, всё там же, при клике по кружочку. Т.е кликаем,переходим,присваиваем через ST-код.
nomer_dat:=1.1;
nkpr:=N[1,1];
IF(D[1,1].0 AND D[1,1].3)THEN
colornorm:=TRUE;
sost_text:=1;
END_IF
IF(D[1,1].0 AND D[1,1].3 AND D[1,1].1)THEN
colorpor1:=TRUE;
sost_text:=2;
END_IF
IF(D[1,1].0 AND D[1,1].3 AND D[1,1].1 AND D[1,1].2)THEN
colorpor2:=TRUE;
sost_text:=3;
END_IF
IF(NOT(D[1,1].0 AND D[1,1].3))THEN
colorerr:=TRUE;
sost_text:=4;
END_IF
при компиляции пошли ошибки:
------ Компиляция : Приложение: Device.Application -------
типизировать код...
[WARNING] iodrvmodbus, 3.5.4.0 (3s - smart software solutions gmbh): UpdateSlaveFBTriggers [ModbusSlaveComPort]: C0196: Неявная конверсия из типа без знака 'UINT' в тип со знаком 'INT': возможно изменение знака
[WARNING] gazoanaliz: C0200: Отсутствует разрешение для заполнителя CmpCodeMeter
[ERROR] gazoanaliz: Таргет-визуализация [Device: Plc Logic: Application: Менеджер визуализации](Таргет-визуализация): Стартовая визуализация <Visualization1> не существует
[ERROR] gazoanaliz: Vis_ASN [Device: Plc Logic: Application](Вход элемента ID 25): [C0046: Идентификатор 'nomer_dat' не задан
Компиляция завершена -- 2 ошибок, 2 предупреждений
коментирую
//nomer_dat:=1.1;
//nkpr:=N[1,1];
далее
------ Компиляция : Приложение: Device.Application -------
типизировать код...
[WARNING] iodrvmodbus, 3.5.4.0 (3s - smart software solutions gmbh): UpdateSlaveFBTriggers [ModbusSlaveComPort]: C0196: Неявная конверсия из типа без знака 'UINT' в тип со знаком 'INT': возможно изменение знака
[WARNING] gazoanaliz: C0200: Отсутствует разрешение для заполнителя CmpCodeMeter
[ERROR] gazoanaliz: Таргет-визуализация [Device: Plc Logic: Application: Менеджер визуализации](Таргет-визуализация): Стартовая визуализация <Visualization1> не существует
[ERROR] gazoanaliz: Vis_ASN [Device: Plc Logic: Application](Вход элемента ID 25): C0231: Здесь требуется выражение типа 'BOOL'
Компиляция завершена -- 2 ошибок, 2 предупреждений
в чём причина? переменные определены глобально,текстовый лист создан. здесь есть привязка выполнения ST-кода только к данной визуализации? как можно осуществить задумку?

RV9WFJ
29.12.2014, 11:25
nomer_dat глобальная? Скорее всего нет, тогда перед ней необходимо указать какому POU она принадлежит: POU_Name.nomer_dat

cen_turion
29.12.2014, 11:34
то есть указать её полное имя!?

GoodLuck
29.12.2014, 11:34
[ERROR] gazoanaliz: Таргет-визуализация [Device: Plc Logic: Application: Менеджер визуализации](Таргет-визуализация): Стартовая визуализация не существует


Проверьте, задана ли стартовая визуализация? А то судя по всему нет.

cen_turion
29.12.2014, 11:38
ну да! стоило написать PLC_PRG. как всплыла подсказка со списком переменных! спс!

cen_turion
29.12.2014, 11:39
Проверьте, задана ли стартовая визуализация? А то судя по всему нет.
да , она пока не задана! а вот остальные предупреждения не понятны!