Вопросы новичка (kobrik)

Инженерное программное обеспечение
Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

Сообщение Михайло »

Я со строками обычно не работаю. А можно просто присвоить произвольную строку типа "Hello world!" тэгу Outvalue1?

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

периферийное устройство будет считывать все в строках, по этому нужна конвертация. Срочно нужно это закончить в SCL, вроде простая задачка но както не получается уже два дня.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Вопросы новичка (kobrik)

Сообщение Автоматизатор »

kobrik писал(а):Вот сделал кое что, но не подходит.
Что не подходит? Компилятор ругается? Что не так?

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

Автоматизатор писал(а):
kobrik писал(а):Вот сделал кое что, но не подходит.
Что не подходит? Компилятор ругается? Что не так?
синтаксис неправильный

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

Сообщение Михайло »

Ааа.. Ну тип REAL занимает 4 байта (двойное слово), то есть обращаться надо DB150.DBD0, а не DB150.DBW0.

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

все равно не получается
Unbenannt1.JPG
Unbenannt.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

Какой же немецкой шняге понравится, когда вы в тело дата блока пытаетесь запхнуть описание функции? Или наоборот - к телу функции приделать голову от дата блока? Разберитесь, что это у вас должно получиться...
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

Сообщение Михайло »

Точно! :)

Внутри скобок DATA_BLOCK ... END_DATA_BLOCK нельзя писать код, тут только структура данных. Что-то я не разглядел ошибку.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Вопросы новичка (kobrik)

Сообщение Автоматизатор »

В ТИА портале интерфейс описывается отдельно. Там такого не сделать.

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

так я спрашивал ведь в сименсе, сказали можно. и в интернете полно примеров, просто у меня что то не так пошло. это ведь Source, который генерирует блок данных. Так что все функции производятся в Source.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

Сообщение Михайло »

kobrik, в любом случае операции присвоения должны быть вне структуры датаблока, т.е. не внутри DATA_BLOCK ... END_DATA_BLOCK.

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

Михайло писал(а):kobrik, в любом случае операции присвоения должны быть вне структуры датаблока, т.е. не внутри DATA_BLOCK ... END_DATA_BLOCK.
не знаете случайно каким должен быть синтаксис в этом случае?

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Вопросы новичка (kobrik)

Сообщение Автоматизатор »

Надо смотреть документацию на язык
https://support.industry.siemens.com/dl ... 5.1_ru.pdf

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Вопросы новичка (kobrik)

Сообщение mr_Frodo »

kobrik писал(а):
Михайло писал(а):kobrik, в любом случае операции присвоения должны быть вне структуры датаблока, т.е. не внутри DATA_BLOCK ... END_DATA_BLOCK.
не знаете случайно каким должен быть синтаксис в этом случае?
точно не скажу, тоже очень мало работал с СЦЛ, но в любом случае компилятор не видит заголовка и окончания функционального блока, в котором вы описываете алгоритм работы, поэтому он воспринимает операторы присвоения, как часть описания дата блока, которое вы, соответственно уже делаете по мнению компилятора, неверно.
Вот моя подпись...

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

Я мигрировал проект S7 из классического варианта в ТIA 14. Во время компиляции, теперь я получаю предупреждениe "Адрес не занят переменной"/ "die Addresse wird nicht durch eine Variable belegt.". Дело в том, что в S7 можно было обращаться к целому слову, представленному отдельными битами в блоке данных. А в ТIA 14 возможно эта возможность уже не существует. Kак быть в этом случае?
Yверен что многие сталкивались с этим при миграции
Unbenannt neu.JPG
Unbenannt neu1.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

Сообщение Михайло »

Нужно зайти в свойства датаблока и отключить там галочку "Optimized access". Тогда датаблок станет такой же, как в классическом Степе.

Но правильнее сделать так (по современному!): переменную DB201.DBW4, состоящую из 16-ти битов D2_xx, заменить на одну переменную D2 типа Word. Обращаться к отдельным битам как D2.x0-D2.x15. Только надо ручками поработать, во всей программе изменить код... Преимущество очевидное - код будет более читаемый, вместо 16-ти переменных останется одна. Очень важно хотя бы попробовать современный тиапорталовский вариант, чтобы понять, что к чему.

По-старому называется "абсолютная адресация" (DB201.DBW4), по-новому - "символьная адресация" (D2). В новом варианте не надо помнить адрес, только некоторое удобное имя.

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

Михайло писал(а):Нужно зайти в свойства датаблока и отключить там галочку "Optimized access". Тогда датаблок станет такой же, как в классическом Степе.
это не поможет. Блок данных у меня не оптимизирован, посмотрите на скриншот, там адреса прописаны. В если стоит галочка там то адреса исчезают, если конечно пользователь сам не скрыл эту колонку.
Михайло писал(а): Но правильнее сделать так (по современному!): переменную DB201.DBW4, состоящую из 16-ти битов D2_xx, заменить на одну переменную D2 типа Word. Обращаться к отдельным битам как D2.x0-D2.x15. Только надо ручками поработать, во всей программе изменить код... Преимущество очевидное - код будет более читаемый, вместо 16-ти переменных останется одна. Очень важно хотя бы попробовать современный тиапорталовский вариант, чтобы понять, что к чему.

По-старому называется "абсолютная адресация" (DB201.DBW4), по-новому - "символьная адресация" (D2). В новом варианте не надо помнить адрес, только некоторое удобное имя.
а как тогда прописать комментарии для каждого бита?

То что вы написали это ведь обратная операция "читать биты из слова", а мне нужно наверное "объеденить биты в одно слово"...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

Сообщение Михайло »

Для твоего случая писать комментарии не вижу смысла, это же биты Links Gruppe X.

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

Еще один вариант попробуй: создай массив типа ARRAY[0..15] of Bool. Может эта штука будет удобна?

kobrik
Профессионал
Сообщения: 663
Зарегистрирован: 04 ноя 2012, 19:23

Re: Вопросы новичка (kobrik)

Сообщение kobrik »

а массив ARRAY[0..15] of Bool разве может заменить переменную типа WORD? в моем случае вход в блок требует чтоб переменная была типа WORD.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Вопросы новичка (kobrik)

Сообщение Михайло »

ну да...

Ответить