Объясните плиз, как у Вас на второй картинке, в разделе элементов отображается состояние битов? По мануалу надо использовать директиву pragma, но как, не пойму...
Объясните плиз, как у Вас на второй картинке, в разделе элементов отображается состояние битов? По мануалу надо использовать директиву pragma, но как, не пойму...
Да вроде так и делал, а что то не получалось.
Мануал то читал, но ясность при большом объеме входной информации в мозг, параметр относительный.
1) Галочку замены констант сделал сразу.
2) В глобальные константы пробовал добавлять (по мануалу), но т.к.. результата не нашел, то убрал сначала.
3) Сейчас все в кучу свел и получилось. Я просто структуру объявил в глобальных. Поэтому и не мог понять скрины, где в PLC_PRG отображаются биты... Устал уже видать за день
4) Без объявления констант действительно выдает "Некорректное выражение".
Еще вопросы.
1) Правильно ли я понимаю, что bitaccess мне дает только (по мануалу) возможность мониторить побитно переменную?
Сейчас ПЛК рядом нет, попробовать заново не могу(ведь как я понял SysLibMem.lib выполняется в ПЛК), но все же.
2) Почему у меня при копировании SysMemCpy(ADR(MDVV),ADR(MV110_32DN),4);
все копировалось в первую переменную?
3) Как пользоваться директивой "pragma"?(*Создал структуру MV110DN*)
TYPE MV110DN
STRUCT
Motor0: BOOL ;
Motor1: BOOL ;
-------//------------
Motor31: BOOL ;
END_STRUCT
END_TYPE
(*Объявил*)
VAR_GLOBAL
MDVV:MV110DN;
END_VAR
(*Копирую из MV110_32DN в MDVV - 4 байта (DWORD)*)
SysMemCpy(ADR(MDVV),ADR(MV110_32DN),4);
(* Запускаю исполнение *)
(* Изменяю данные в MV110_32DN, они копируются почему то в mdvv.Motor0 *)
(* и при значении выше 7 (т.к. bool занимает byte без прямой адресации, естественно выдает ошибку INVALID:16#*)
mdvv.Motor0;
mdvv.Motor1;
mdvv.Motor2;
mdvv.Motor3;
4) Ну и напоследок: А Вы, как работаете с именами переменных?
Думаю, что вряд-ли с помощью Pack-Unpack...
Прошу прощения за настойчивость.
Спасибо всем за помощь.
Ну есть чуть чуть...
Наверное речь идет о самой железяке?1.А где тип MDVV ? (100 пудов - это все и объяснит)
MV110_32DN - 32bit input module. Объявлена в конфигурации.
А если MDVV структуре, то я ее объявил так:
MDVV:MV110DN;
Задумывался о типе структуры, но посчитал, что ее тип, это сумма переменных которые она включает в себя...
Пока еще не понимаю, к сожалению. Но мы идем вперед2.для syslibmem в эмуляции не сложно сделать подставку. Главное понимать - что оно делает
Не знаю. Суть вопроса, как рациональней передать данные полученные (отправляемые) с модулей ввода-вывода (и не только) в переменные с названиями имеющими более доступный логический смысл.3.И на кой вооще здесь syslibmem ?
Но данная тема ускорила мое понимание смысла syslibmem и структур в целом. За что не устаю говорить спасибо!
Сорри, названия были от балды..
Примерно рядом мысли и кружили, но как же быть?Ну и так попорядку :
Что есть тип МДВВ у Вас - тоже что и array[0..31] of bool (byte)
А тип MV110_32DN ? - dwоrd, ну или array[0..3] of byte;
В 32 стакана положили 4 ведра.
Ведь входное значение DWORD, а в структуре вроде как 32 bool.
Но на практике выходит, что 32 byte. А прямые адреса в структурах использовать нельзя.
Ок. Но со структурами то надо разобраться?Совет-на время забудте про syslibmem.
МДВВ-тоже образное название - Модуль В/В (отголосок прошлых проектов). А железка МВ110-32ДН - 32 входа, как я понимаю DWORD.ЗЫ
Или я что-то пропустил, но у МДВВ 12 входов. (маска - word)
Новый вопрос
Возможно ли организовать связь ПЛК с OPC сервером и CodeSys через один GSM/GPRS модем-порт? Если можно, то подсказку в студию пожалуйста. Собственно экспериментально пробовал через CSD - не получилось. Если в конфигурации присутствует модем и тот же порт указан в CoDeSys.cfg, то КДС выдает сообщение, что модуль не будет инициализирован. Но уверенности нет, т.к. соединение через CSD CodeSys у меня и так проходило через раз. Поиск ответов не дал..
По связи через модем есть отдельные слова в РП и РЭ на ПЛК (На ПЛК110 точно есть).
Надо понимать, что Gateway очень тяжелый, и полезной информации несет в 5-10 раз меньше, чем сопутствующей.
СОответственно время...
Если OPC Gateway, то не стоит - CoDeSys не рекомендует обращение несколькими устройствами к одному контроллеру по Gateway одновременно.
Пролистал РЭ ПЛК110. Упоминания о использовании одного порта для подключения средой CodeSys и для связи с внешним миром - OPC сервером там нет (как и в других РП и РЭ по ПЛК и ПМ01).
Есть OPC Lectus и ПЛК100.. Имелось ввиду не одновременное обращение несколькими устройствами, а в разное время: периодический опрос OPC сервером, а при необходимости корректировки программы соединиться средой CodeSys.Если OPC Gateway, то не стоит - CoDeSys не рекомендует обращение несколькими устройствами к одному контроллеру по Gateway одновременно.
Подсознательно я понимаю, что указав порт в codesys.cfg, ПЛК наверняка зарезервирует его для связи по протоколу Gateway и поэтому проигнорирует модуль Modem в конфигурации, настроенный на этот же порт... Но может есть варианты?
Чего то не пойму.
В http://www.owen.ru/uploads/rie_plk110.pdf
7.2 Технический осмотр контроллера проводится обслуживающим персоналом не реже........
Далее....
7.3 Проверку функционирования аккумулятора необходимо производить