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

Непонятная особенность встроенного Codesys

Модератор: специалисты Weintek

Ответить

Автор темы
mik
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 10 сен 2015, 23:17
Имя: Полтораков Михаил Васильевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 4 раза
Поблагодарили: 6 раз

Непонятная особенность встроенного Codesys

Сообщение mik »

Всем привет.
Заметил некую особенность (неприятную) в поведении встроенного CDS во взаимодействии с проектом EBPro.
Суть:
1. Создаем проект Кодесис. В качестве таргета выбираем Weintek Built-in Codesys.
2. В проекте пишем простенькую программу:

Код: Выделить всё

PROGRAM PLC_PRG
VAR
   iVarIn: INT;
   iVarOut: INT;
END_VAR
iVarOut:=iVarIn+100;
3. Создаем символьную конфигурацию, в нее включаем переменную iVarIn. Сохраняем файл символьной конфигурации.
4. Создаем проект EBPro. Панель сМТ-2108Х. В проекте делаем экранный объект "числовой", привязываем его к регистру LW-658.
5. Создаем объект "Передача данных (глобальный)". В нем передаем одно слово из LW-658 в переменную iVarIn с периодичностью 1 с.
6. Загружаем оба проекта (CDS и EBPro) в панель и запускаем.
7. Видим, что значение переменной iVarIn в PLC_PRG равно 0.
8. Ничего не трогаем.
9. Примерно через 10 секунд видим, что значение переменной iVarIn в PLC_PRG равно 16264.

WTF?

PS: файлы проекта не вставляются.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Непонятная особенность встроенного Codesys

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

Переменная iVarIn в скрипте, при каждом его запуске получает область памяти, и в этой памяти что-то лежит (как повезет), вы должны инициализировать переменную при каждом старте скрипта. Но вы не делаете это. И думаете, что у вас глобальная переменная, которая получила ячейку памяти при включении панели и живет там всегда. Нет.
ИМХО проблема в этом.

Автор темы
mik
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 10 сен 2015, 23:17
Имя: Полтораков Михаил Васильевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 4 раза
Поблагодарили: 6 раз

Непонятная особенность встроенного Codesys

Сообщение mik »

Обработка переменной iVarIn происходит не в скрипте, а в POU PLC_PRG. Т. е. обработка переменной iVarIn происходит не в EBPro, а в Codesys. И обратите внимание, что в течение примерно первых 10 секунд после старта панели в переменную iVarIn передается значение регистра LW-658. А по прошествии этих 10 секунд переменная iVarIn самопроизвольно принимает значение 16264.
Ответить

Вернуться в «WEINTEK (операторские панели)»