PDA

Просмотр полной версии : ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)



Страницы : 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Vladimir_tat
22.09.2011, 18:23
Немного неправильно написал - в СисТаймЛиб есть такой пункт "Дэй оф уик", с него можно получать на вход порядковый номер дня недели, а мне нужно получать на вход порядковый номер дня года

Vladimir_tat
23.09.2011, 08:06
Я Вам и ответил на Ваш вопрос из d#2011-09-22 вычесть d#2011-01-01, так как напрямую формат DATE не вычитается переводите этот формат в DWORD, количество дней из получившейся разности думаю тоже ничего трудного нет, естесственоо переведя обратно в DATE
Скажите, а как/где получить на вход дату в формате d#2011-09-22, т.е. не отдельно каждый параметр, день/месяц/год, а целиком дату?
Пардон за возможно очевидный вопрос

OSMODIUS
23.09.2011, 14:48
OSMODIUS, чтоб грешить на плк надо сделать пустой проект с нуля, залить в плк загрузочный код, задать глобальной сохраняемой значение и выкл.


Выполнил данную рекомендацию . Результат удручающий - переменная слетела! Взял другой контроллер - одолжил у напарника - кажется 154 (у меня 100). Все прошло на ура - переменная сохранилась и после пропадания все пришло в норму. Проверил заряд аккумулятора 4,18 по сравнению с 154 даже больше , у него 3,84.

Перед тем как проводить эксперименты перепрошил последней прошивкой с сайта контроллер и переустановил последние таргеты. Пример тестовой программы прилагаю. На чужом переменная сохраняется , на моем нет! Делаю выводы - надо звонить в ТЕХПОМ.

Николаев Андрей
23.09.2011, 15:48
C техпом. все не просто, она частично здесь...
Время контроллер не сбрасывает?

OSMODIUS
23.09.2011, 16:33
C техпом. все не просто, она частично здесь...
Время контроллер не сбрасывает?


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

В любом случае до ТЕХПОМА дозвонился сказали , что будут заниматься в понедельник.

В тестовой программе всего 2 переменные , 1 - сохраняется. Вроде ничего не накосячил. Ну не сохраняет мой контроллер переменные.
У меня с этим контроллером уже очень близкие отношения , с удовольствием бы поменял портнера !!!!!


первое упоминание проблемы:
http://www.owen.ru/forum/showpost.php?p=68490&postcount=284

Nick_V1
26.09.2011, 23:49
Дравствуйте!!!!
Мне нужно с помощью ПЛК63 по сети RS485 опрашивать датчики мощность.
Где можно посмотреть примерную реализацию на ST.

Николаев Андрей
26.09.2011, 23:51
На диске - примеры использования библиотек ModBus и ОВЕН

Viktor_VS
27.09.2011, 21:45
Здравствуйте, пытаюсь связать плк 110 с Lectus Modbus OPC/DDE сервер, делаю всё по примеру выложенному здесь: http://www.kipshop.ru/Documentation/lectus/bistriy_start_tcp.zip
пробовал уже с двумя контроллерами 110-32 и 110-60, пробовал через Ethernet и через RS-232 связываться, ничего не получается. Никаких данных не передаётся, и через несколько секунд пишет “нет связи с устройством”, IP везде 10.0.6.10, порт 1200 (стандартные установки).
Если кто пробовал, делать по этому примеру, объясните, пожалуйста, что не так?
Если у кого остались рабочие файлы для codesys и lectus буду рад.

Viktor_VS
27.09.2011, 22:16
поменял, теперь lectus пишет "ошибка соединения"

Viktor_VS
27.09.2011, 22:28
смотрите если у Вас контроллер имеет адрес 10.0.6.10 и порт 502, то выполнив команду в консольном окошке <telnet 10.0.6.10 502> при наличии связи станет черный экран курсор пропадет, если связь не установиться будет выдано об этом сообщение

попробовал - чёрный экран и с 502 и 1200

Viktor_VS
27.09.2011, 22:48
значит, дело только в лектусе, снесите созданный узел, начните с нуля

Наконец-то, спасибо огромное, заработало, я просто всё время с 1200 портом всё делал, думал как codesys связывается, так и другие проги должны, а тут ещё и у переменных в lectus адрес был 1 и 2, а в codesys я создавал 0 и 1 , и из-за этого нечиталась ни одна.

Сухарик
30.09.2011, 11:56
Здравствуйте.
Подскажите пожалуйста как подключить аналоговый вход и аналоговый выход.
На языке CFC, если есть ПЛК-150 И.М. и термометр сопротивления ТСП-100П, и как сделать так что бы значение на входе сопротивления совпадало со значением на выходе тока 4-20мА.

drvlas
30.09.2011, 12:36
Наверное Вы это ищите
Я не ищу покоя, я ищу кингстон, как говаривал наш любимый классик :)

Есть одна штука, которая портит нервы при отладке в КДС. Такого не было, пока не работал с SFC-модулями, хотя это может быть и не информация, а ложная связь.
Итак.
Когда ставлю точку останова (в обычном ST-действии моего SFC POU), то система как-то благосклонно смотрит на это в первый раз. Позволяет разок пройтись по шагам. А уже при второй попытке вдруг жалуется на "Слишком много точек останова подряд" и отключает онлайн! Сообщение прилагаю.
Причем, после этого КДС обижается совсем НИПАДЕЦКИ. Я не могу в онлайн сделать СТАРТ - даже если убедился, что точек останова нет вообще (диалог по точкам останова прилагаю). Я перезапускаю систему, я выключаю ПЛК, я танцую с бубном голый при луне... Прошлый раз я не знаю, что именно помогло - слишком много было танцев. А теперь вот случилось снова и я решил поразвлечь уважаемую публику вопросиком.
Правда, пока написал вопрос, часть ответа получил. Помог такой танец: выключил ПЛК, потом включил и нажал там кнопочку Сброс (очень редко ее юзаю).

Так что делать? Приспособить педаль на кнопочку Сброс ПЛК? И, главное, как не попадать в эту ситуацию? Я уже боюсь отладки по шагам...

Спасибо!

Сухарик
02.10.2011, 20:17
Наверное Вы это ищите

Большое спасибо, очень помогли =)

drvlas
02.10.2011, 22:04
Я не ищу покоя, я ищу кингстон,
Кажется, доискался...

Скажите, плз, что такое Ошибка № 0 при загрузке проекта?
Ситуация такая. Вполне прилично работающая пара - ПЛК-100 и ПК, связб по Етернету, гружу проекты десятки раз и вроде как нормально. Вчера вечером создал загрузочный проект, пошел спать. А сегодня целый день повторяется одна и та же ситуация: проект вроде грузится, а потом вместо пуска ПЛК комп задумывется на несколько секунд и выдает сообщение (прилагаю).
Если я правильно понимаю, что-то этот номер 0 должен значить? Куда копать? Что изменилось в ПЛК за ночь?

Сменил комп - ситуация повторилась.

Еще один факт: старые версии где-то на 150 кБ грузятся и запускаются. Новые - нет. Но у них объем поболе - 170-180 кБ. Уменьшил объем новой версии до 117 К (исключил из компилирования модуль) - все заработало. Вчера работало и при 180 К...

Поэтому такой вопрос: а какой объем программы допускается? Как узнать ресурсы ПЛК?

drvlas
02.10.2011, 23:06
Посмотрел браузером, данные о ПЛК прилагаю

drvlas
02.10.2011, 23:09
пробовали пустой проект залить и сбрасывали ли ПЛК?
Ну, пустой совсем? Нет. Пробовал очень простой - все нормально. Пробовал размером 117 К - тоже. Вчера и 180 К грузился. А сегодня - нет.

ПЛК, конечно, сбрасывал - и кнопочкой, и выключал на полчаса.

schlosser
02.10.2011, 23:47
Отключи файрволл. У меня из за NOD Smart Security такая ошибка выскакивала.

drvlas
02.10.2011, 23:50
Отключи файрволл. У меня из за NOD Smart Security такая ошибка выскакивала.
Я не знаю, куды лезть, чтобы его отключить :(
У меня Винда 7. Щас буду искать, если не ткнешь носом

Уря! Нашел Брэндмауэр, отключил его - и загрузилось и пошло! Уж не знаю, чего оно вчера пускало... И вообще ничего не понимаю. Но все равно - спасибо огромное!

Если будут жалающие (и могущие) пояснить этот фокус - с радостью выслушаю, конечно.

schlosser
03.10.2011, 00:01
Ищи около часов в правом нижнем углу. Жми пр. кн. мыши и ищи (Временно отключить защиту) или что то вроде этого.

drvlas
03.10.2011, 00:11
Так эта... А я не то отключил??? Ты смотри, а помогло :)

Честно, я баран в этих современных компах. Искал, где ты сказал - не вижу. Что-то такое было в ХР, а здесь нет.
А брандмауэр я отключил именно для этой сети. В ней всего - ПК и ПЛК. Поэтому - пусть и будет отключен всегда. Мне не жалко.

А понять эту ситуацию - совсем безнадежно?

schlosser
03.10.2011, 09:06
Значит у тебя не установлен Smart Security, а роль файрволла играет брэндмауэр Win. Главное что помогло. Я тоже не сразу догадался. Пару недель подключался нормально , а потом раз и всё, главное что через Debug 232 подключается, а через Enternet не хочет.

swerder
03.10.2011, 09:38
эта ошибка №0 означает таймаут связи кодесиса с плк. может возникать при обрыве кабеля, при неправильно выбранном интерфейсе связи в "параметрах связи" и в этом случае из-за файрволла, если соединяетесь через эзернет. может еще из-за чего может возникать.

drvlas
03.10.2011, 09:48
Значит у тебя не установлен Smart Security, а роль файрволла играет брэндмауэр Win.
Не знаю, нужно ли это теперь, но вот, нашел, чтоу меня работаtт Secirity Essentials. Наверное, это какой-то аналог Smart Security.

2 swerder: Спасибо. Ну, таймаут - это слабая диагностика. В общем, будем довольствоваться тем, ШО ЯКОСЬ ПРАЦЮЕ :)
Без шаманства в нашем деле никак...

swerder
03.10.2011, 10:02
почему слабая? кдс явно говорит, что не может связаться с плк. пару возможных причин я привел. или надо чтоб кдс сам выяснил почему не может связаться, снес файрвол, поменял кабель...?

drvlas
03.10.2011, 10:43
почему слабая?
ОК, я выразился грубо. Имеется в виду, что "почему фРайервол разрешал-разрешал, а теперь вдруг запрещает работать с ПЛК?" - на такие вопросы ответов нет. Согласитесь, уважаемый коллега, это оставляет вопрос диагностики ситуации ПРИоткрытым...

drvlas
03.10.2011, 11:03
Ну, все, все, извините, если задел! Нет объяснения - и ладно.
Просто вот вчера я с утречка и до позднего вечера работать не мог. Никакой отладки. Это уже не совсем "выскакивает иногда". И в условиях дедлайна я бы крыл матом и фРайервола, и не только. Хорошо, что сейчас не так напряженно, работаю в удовольствие.

swerder
03.10.2011, 11:07
"почему фРайервол разрешал-разрешал, а теперь вдруг запрещает работать с ПЛК?" - на такие вопросы ответов нет. Согласитесь, уважаемый коллега, это оставляет вопрос диагностики ситуации ПРИоткрытым...
тут согласен, как карты лягут.

lara197a
03.10.2011, 12:28
Из личных наблюдений скажу, что это врятли поможет. Контроллер или конектится сразу или ждать бесполезно. Часто ожидание таймаута раздражает. Приходится отключаться физически. При этом сразу выскакивает "ош. связи" и можно повторить попытку.

drvlas
03.10.2011, 12:36
Из личных наблюдений скажу, что это врятли поможет.
Ну, я решил все же проверить. Поставил побольше таймаут, а потом, ИСТЕСНА, решил вновь включить этот злополучный брендмауэр. Чтобы проверить, помолгло ли. И тут мои кривые ручки сделали свое дело - я отключил не защиту, а всю эту сеть! Теперь комп упорно не видит по Этернету мой ПЛК :(

Буду перезапускаться, мож поможет. От, блин, с этими компами! Настолько все неочевидно, как с сетями работать...

drvlas
03.10.2011, 14:28
Настолько все неочевидно, как с сетями работать...
Э-хе-хе... Тайна осталась тайной.

1) Увеличил таймауд с 2,2 до 5 с. Выключил (нечаяно) этот адаптерв компе.

2) Перезапустил ПК (танцы). Нашел, как включить сетевуху. Проверил с таймаутом 5 с - нормально подключается и работает.

3) Внимание! Вернул таймаут "обратно взад". Продолжает работать.

Резюме: после некоторых действий в ПК КДС устыдился и начал работать с теми же установками и с тем же проектом, с которыми сутки назад пил кровушку.

Павел В.
04.10.2011, 11:21
Подскажите пожалуйста, где взять библиотеку LibPLC160.lib? На диске с плк не нашел, или может название отличается?

Павел В.
04.10.2011, 11:59
capzap, нужна функция DWORD GetStatus(void) для диагностики аналоговых входов (Status). На эту библиотеку ссылается руководство по программироваию ПЛК160 (стр. 80). Если есть более простое решение диагностики аналоговых входов/выходов в пользовательской программе, буду рад услышать. Я в этом деле новичок, раньше только сименсами занимался.

Николаев Андрей
04.10.2011, 19:20
такие вопросы рекомендую писать на plc@owen.ru

Павел В.
11.10.2011, 11:51
Библиотеки я видимо не дождусь. :)
capzap, помогите новичку, как считать байт из REAL переменой. Никак команду не найду, нашел только как считать бит.

capzap
11.10.2011, 12:44
получить старший байт можно с помощью DWORD_TO_BYTE(SHR(REAL_TO_DWORD(value),24)), где value значение в формате REAL, это навскидку, надо проверять

drvlas
11.10.2011, 14:26
Библиотеки я видимо не дождусь. :)
capzap, помогите новичку, как считать байт из REAL переменой.
Какой именно байт? Преобразовать РИАЛ в байт или конкретно 1-й, 2-й, ... байты?

Если вытащить побайтно - то указатели рулят. Если преобразовать - то стандартная функция. Или нет?

capzap
11.10.2011, 17:30
Наверное с указателями правильнее, потому что преобразования влекут за собой потерю информации и коды будут прочитаны не верно, только как, у меня получается запредельно громоздко :)

pt: POINTER TO DWORD;
value: BYTE;

pt:= ADR(%IR3.0);
value:=DWORD_TO_BYTE(SHR(pt^,24));

drvlas
11.10.2011, 19:58
у меня получается запредельно громоздко
Ну, я не понял, что ты хотел там получить.

1) Просто уложить на место байта старший байт от DWORD?

2) преобразовать КАК-ТО значение числа из DWORD в BYTE?

3) Или в DWORD лежит уже какой-то REAL? И нужно из него что-то в байт?

drvlas
11.10.2011, 21:17
ptr: POINTER TO BYTE;
ptrby: POINTER TO BYTE;
aby: ARRAY [0..3] OF BYTE;

ptr:= ADR(%IR3.0);
ptrby := ADR( aby[0]);

FOR i := 1 TO 4 DO
ptrby^ := ptr^;
ptr := ptr + 1;
ptrby := ptrby + 1;
END_FOR


Не проверял. Но как-то так. И потом рассматривай себе на здоровье, ХОШ - первый байт, ХОШ - второй, ХОШ КАКОЙ ХОШ :)
Главное, что меня удивило, когда уважаемый Валенок учил меня здесь пойнтеры юзать, что при прямом наращивании указателя КоДеСис не обращает внимание на размер того, на что он указывает. Поэтому операция ptr := ptr + 1; установит пойнтер именно на следующий байт, а не на следующий РИАЛ (как можно ожидать из опыта Си).

capzap
11.10.2011, 21:46
не ну в главном документе про это то есть запись
Обратите внимание: Указатели инкрементируются побайтно! Для увеличения указателя, как это принято в C-компиляторах, используйте инструкцию p=p+SIZEOF(p^);.

drvlas
11.10.2011, 22:03
не ну в главном документе про это то есть запись
Я сюда пишу тогда, когда главный документ
- прочитан и не понят
- не прочитан
- не известно, что в нем это есть

думаю, что я не одинок :)

Интересно, а автору вопроса наш треп еще нужен?

drvlas
12.10.2011, 09:53
Проверил в эмуляторе работает
Ты и мертвого уговоришь :)

И я проверил. Спасибо! Была ошибочка - оба пойнтера нужно объявлять одного типа, иначе компилятор ругается. А после объявления их указателями на байт (я у себя и не на байт пробовал - катит!) можно спокойно присваивать ему значение адреса ЧЕГО УГОДНО.

Вот, СОБСНО, работающий проект


PROGRAM PLC_PRG
VAR
ptr: POINTER TO BYTE;
ptrby: POINTER TO BYTE;
aby: ARRAY [0..3] OF BYTE;
i: BYTE;
IR30: REAL := 25.5;
END_VAR

ptr:= ADR(IR30);
ptrby := ADR( aby[0]);

FOR i := 1 TO 4 DO
ptrby^ := ptr^;
ptr := ptr + 1;
ptrby := ptrby + 1;
END_FOR


4851

Evgengold
22.10.2011, 16:10
Где можно посмотреть Адрес контроллера (который задается от 0 до 255)?

Extremator
22.10.2011, 17:33
Уважаемые!
Не подскажете ли, как в упрощенном SFC
удалить ненужный шаг-переход.
Технически.
Что нужно выделить-нажать-произнести...

drvlas
22.10.2011, 18:10
Уважаемые!
Не подскажете ли, как в упрощенном SFC
удалить ненужный шаг-переход.
Ну, клацнуть на шаге, нажать ШИФТ, подвести мышку к преходу, клацнуть еще раз - пунктир обведет и шаг, и переход. Дажать ДЕЛ - кодесис даже не переспросит

Extremator
22.10.2011, 18:55
Ну, клацнуть на шаге, нажать ШИФТ, подвести мышку к преходу, клацнуть еще раз - пунктир обведет и шаг, и переход. Дажать ДЕЛ - кодесис даже не переспросит

О-оо, спасибо, добрый человек!

А я не дотумкал, что шаг с переходом объединить надо.

Андрейка
27.10.2011, 19:17
Здрасте). Подскажите пожалуйста каким функциональным блоком можно поставить тревогу на вход, чтобы при при значении ЛОЖЬ загаралась тревожная лампочка.
Тема такая - напряжение 24в проходит через три двигателя, если напряжение остается неизменным, работа станка продолжается, если вдруг уменьшилось - загорается лампочка тревоги и станок выключается(не включается). Думал можно взять блок LIMITALARM, который в Until.lib, но так это, или есть что по проще, не знаю - посоветуйте пжлста.

swerder
28.10.2011, 09:51
alarm: bool;
voltage: int;

alarm := voltage < 24;

Андрейка
28.10.2011, 12:10
swerder Спасибо

Андрейка
31.10.2011, 16:28
capzap, гистерезис для меня было "странным" словом, я ведь не электрик, но погуглив разобрался. Посоветуюсь с знающими этот термин и совместными усилиями решим этот вопрос. :)

Кстати у меня наверное вообще дурацкий вопрос:
Как мне разобраться с разделом объявлений? Туда надо писать абсолютно всё? Есть какие нибудь сцылки на эту тему?
Просто сами функции через пень-колоду почти научился писать, а вот объявления.. как-то не понятно почему именно там писать, а не в коде.

Андрейка
31.10.2011, 16:49
пишите все в коде, как Вам хочется

Спасибо большое. Но к сожалению, так как мне хочется писать, КДС не поймет:). Нужно писать так как хочется мне, но КДСовским языком. И пока у меня очень хреновый акцент:)

Андрейка
31.10.2011, 17:36
Ну раз пошла такая пьянка. Еще вопрос.

В коде мне нужно указать три направления движения Х вперед=> (назад)=<, Y вверх=^ (вниз)=v, а как указать направление перпендикулярное Х? Ну допустим z. Но так это или нет подскажите. просто не уверен в правильности решения

swerder
31.10.2011, 18:04
вы о чем? не знаете как назвать переменные?

Андрейка
31.10.2011, 21:22
вы о чем? не знаете как назвать переменные?

Знаю. Просто это первое задание, свалившееся на меня. Так что лучше лишний раз показать свое скудное образование и уточнить, чем напортачить с три короба, и оказаться крайним.

Андрейка
31.10.2011, 21:24
:) а как у Вас c английским или немецким? Заходите на oscat.de скачивайте библиотеку и документацию, садитесь и изучайте. Практически там есть готовые блоки под любой механизм, которым можно управлять с помощью ПЛК.


А на Белорусском нету? :) :) :). Ладно, ушли от темы, простите за офтоп.

Новички, пишите дальше свои вопросы, тут помогают. А я пока буду сочинять новые вопросы))

Electro2
02.11.2011, 13:17
Помогите с выбором мастера сети.
В сети будет ПЛК110, панель СП270 и 3-4 устройства типо анализаторов сети и датчиков с выходом по ModBus. ПЛК управляет работой устройства, панель необходима для отображения данных с анализаторов и датчиков а также аварийных сигналов от управляемого устройства. Возможно необходимо будет реализовывать простой алгоритм ручного управления устройством с панели (что то типо ВКЛ - ОТКЛ). Также необходимо всю информацию с датчиков и анализаторов передавать на верхний уровень.
В этой ситуации что лучше сделать мастером - панель или ПЛК?

Николаев Андрей
04.11.2011, 21:37
Панель выступает мастером для ПЛК.
ПЛК выступает мастером для счетчиков.

kait-volga
07.11.2011, 10:55
Добрый день.
Вопрос из разряда: как правильней использовать:
считываю/записываю данные с/в МДВВ маской, например MDVV.

Вариант 1:
VAR_GLOBAL
Motor:BOOL;
Motor2:BOOL;
Motor3:BOOL;
END_VAR

(*присваиваем*)
MDVV.0:=Motor; (* как я понимаю, этот кусок *)
MDVV.1:=Motor2; (* кода будет крутиться * )
MDVV.2:=Motor3; (* постоянно *)
(*и в дальнейшем используем переменные Motor, Motor2 и Motor3*)

Вариант 2:
VAR_CONSTANT GLOBAL
Motor:SINT := 0;
Motor2:SINT := 1;
Motor3:SINT := 2;
END_VAR

(*и в дальнейшем используем адресацию через константы*)
MDVV.Motor := TRUE;
MDVV.Motor2 := FALSE;
и т.д.

или есть какой-то третий (правильный) вариант?

kait-volga
07.11.2011, 11:16
второй вариант ни кому не показывайте :)

Почему? Стр. 326 Руководства по Codesys.


да и первый вроде не для считывания а для записи в модуль
Чтение-Запись - не суть важно. Главное как?
Работать то оно работает. Ясно, что пользоваться переменными типа MDVV.5 не есть удобно, когда модули расширения на 32 входа/выхода. Поэтому пользуюсь методом присваивания, т.к. функции аля define в ST нет. Но вот не совсем уверен, что это правильно, может есть другие способы?

capzap
07.11.2011, 11:32
Motor3:BOOL := 2;Вы присваиваете булевой переменной двойку, а она (переменная) может иметь два состояния, с единицей и нулем еще как то можно, но что Вы двойкой получите, задумайтесь
Можете написать структуру с вашими моторами размером с Ваш MDVV, объявить её глобально, а затем использовать команду SysMemCpy(ADR(MDVV),ADR(STRU),2), а в программе использовать STRU.красивое_имя_мотора := что_то_там_булевое

kait-volga
07.11.2011, 11:54
Вы присваиваете булевой переменной двойку, а она (переменная) может иметь два состояния, с единицей и нулем еще как то можно, но что Вы двойкой получите, задумайтесь

Упс. Невнимательность. Скопировал выше и не изменил тип данных. Но если все же правильно объявить (SINT), то данный вариант имеет право на жизнь?


Можете написать структуру с вашими моторами размером с Ваш MDVV, объявить её глобально, а затем использовать команду SysMemCpy(ADR(MDVV),ADR(STRU),2), а в программе использовать STRU.красивое_имя_мотора := что_то_там_булевое
C памятью и структурами еще только разбираюсь. Т.е. правильнее будет воспользоваться структурами?
Я понимаю, что мой проект занимает всего 1% данных и пока на скорость исполнения выбор метода не сильно повлияет, но хочется для себя уяснить как более изящно написать код, без лишнего Г$%ноКода.
Спасибо.

kait-volga
07.11.2011, 12:12
У меня аналогично реализован обмен с панелью, есть регистр HMI_Data. И далее я каждый его бит присваиваю другим битовым переменным.
Inputs_G1:=HMI_Data.0;
Inputs_G2:=HMI_Data.1;
Inputs_G3:=HMI_Data.2;
Inputs_G1:=HMI_Data.3;
Но смущает, что при каждом цикле будут тупо присваиваться значения...

kait-volga
07.11.2011, 14:13
Уважаемый capzap попробовал использовать структуру, не получилось. Нужна помощь :confused:
(*Создал структуру 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;

В чем моя ошибка?

Николаев Андрей
07.11.2011, 14:36
А можно просто взять библиотеку Util.lib в которой есть блоки Pack и Unpack...

kait-volga
07.11.2011, 15:59
А можно просто взять библиотеку Util.lib в которой есть блоки Pack и Unpack...
А смысл, тем более в ST? Я то же самое действие делаю присваиванием.

kait-volga
07.11.2011, 16:32
А по опыту, Вы как именуете/используете переменные? Присваиванием или по типу MDVV.0, MDVV.1?
Структурой в принципе удобно, в плане того, что при вводе точки после названия, CodeSys сам предлагает выбор элементов структуры. Только вот что-то не получается...

kait-volga
07.11.2011, 16:56
SysMemCpy в эмуляторе неработает
Я в ПЛК сразу зашиваю. Как у Вас сделал, в Value значение копируется. Только вот как сделать так как на картинке Box и значения bitacces я не понял.

kait-volga
07.11.2011, 20:34
там где вы читали про глобальные константы, вторым примером должно идти использование директив
Имеется ввиду директива Pragma? Все испробовал, так и не понял как ею воспользоваться :(
Только добился:
"Неизвестная директива (pragma) '<имя>' проигнорирована!"
Данная директива ‘pragma’ не поддерживается компилятором. См. "Директивы компилятора".
Скажите пожалуйста, в какую сторону рыть.

Валенок
07.11.2011, 21:33
Почему не работает ?
ЗЫ
Остальные моторы кончилиcь :)

kait-volga
07.11.2011, 21:48
Объясните плиз, как у Вас на второй картинке, в разделе элементов отображается состояние битов? По мануалу надо использовать директиву pragma, но как, не пойму...

kait-volga
07.11.2011, 22:43
запишите как на наших картинках в структуре, этого достаточно
Да вроде так и делал, а что то не получалось.


Держи.
Нужны еще глоб.конст :
мотор1:байт:=0
..
+ галка замены констант
В мануале все ясно написано.


Мануал то читал, но ясность при большом объеме входной информации в мозг, параметр относительный. :)
1) Галочку замены констант сделал сразу.
2) В глобальные константы пробовал добавлять (по мануалу), но т.к.. результата не нашел, то убрал сначала.
3) Сейчас все в кучу свел и получилось. Я просто структуру объявил в глобальных. Поэтому и не мог понять скрины, где в PLC_PRG отображаются биты... Устал уже видать за день :)
4) Без объявления констант действительно выдает "Некорректное выражение".

Еще вопросы.
1) Правильно ли я понимаю, что bitaccess мне дает только (по мануалу) возможность мониторить побитно переменную?

Сейчас ПЛК рядом нет, попробовать заново не могу(ведь как я понял SysLibMem.lib выполняется в ПЛК), но все же.
2) Почему у меня при копировании SysMemCpy(ADR(MDVV),ADR(MV110_32DN),4);
все копировалось в первую переменную?


(*Создал структуру 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;

3) Как пользоваться директивой "pragma"?
4) Ну и напоследок: А Вы, как работаете с именами переменных?
Думаю, что вряд-ли с помощью Pack-Unpack... :rolleyes:

Прошу прощения за настойчивость.
Спасибо всем за помощь.

kait-volga
07.11.2011, 23:58
Смешались в кучу кони, люди..

Ну есть чуть чуть...

1.А где тип MDVV ? (100 пудов - это все и объяснит)
Наверное речь идет о самой железяке?
MV110_32DN - 32bit input module. Объявлена в конфигурации.
А если MDVV структуре, то я ее объявил так:
MDVV:MV110DN;
Задумывался о типе структуры, но посчитал, что ее тип, это сумма переменных которые она включает в себя...

2.для syslibmem в эмуляции не сложно сделать подставку. Главное понимать - что оно делает
Пока еще не понимаю, к сожалению. Но мы идем вперед :)

3.И на кой вооще здесь syslibmem ?
Не знаю. Суть вопроса, как рациональней передать данные полученные (отправляемые) с модулей ввода-вывода (и не только) в переменные с названиями имеющими более доступный логический смысл.
Но данная тема ускорила мое понимание смысла syslibmem и структур в целом. :) За что не устаю говорить спасибо!

kait-volga
08.11.2011, 00:53
ёх. Не заметил. Но каково !
Опель:ТФольксваген :eek:

Сорри, названия были от балды..

Ну и так попорядку :
Что есть тип МДВВ у Вас - тоже что и array[0..31] of bool (byte)
А тип MV110_32DN ? - dwоrd, ну или array[0..3] of byte;
В 32 стакана положили 4 ведра.

Примерно рядом мысли и кружили, но как же быть?
Ведь входное значение DWORD, а в структуре вроде как 32 bool.
Но на практике выходит, что 32 byte. А прямые адреса в структурах использовать нельзя.


Совет-на время забудте про syslibmem.

Ок. Но со структурами то надо разобраться? ;)


ЗЫ
Или я что-то пропустил, но у МДВВ 12 входов. (маска - word)
МДВВ-тоже образное название - Модуль В/В (отголосок прошлых проектов). А железка МВ110-32ДН - 32 входа, как я понимаю DWORD.

kait-volga
08.11.2011, 08:26
Ну и получили пачку. Зачем теребить-то.
6 банок в упаковке проще тащить чем в россыпью.
Наделали процессов с входными красивоименоваными булями, и на верхнем уровне передали нужные биты нужным булям - сразу видно кто к чему привязан. И комментарии не нужны, и понятно кто на чем висит.
МДВВ - 12Di/8Do
На этом уровне наглядно видно что 2 насоса на МДВВ и 1 на своих входах/выходах
Понятно. Спасибо. Так и делаю в общем. Просто интересовало как дела с этим обстоят у других. Вопрос закрыт.

kait-volga
08.11.2011, 08:39
Новый вопрос :)
Возможно ли организовать связь ПЛК с OPC сервером и CodeSys через один GSM/GPRS модем-порт? Если можно, то подсказку в студию пожалуйста. Собственно экспериментально пробовал через CSD - не получилось. Если в конфигурации присутствует модем и тот же порт указан в CoDeSys.cfg, то КДС выдает сообщение, что модуль не будет инициализирован. Но уверенности нет, т.к. соединение через CSD CodeSys у меня и так проходило через раз. Поиск ответов не дал..

Николаев Андрей
08.11.2011, 10:57
По связи через модем есть отдельные слова в РП и РЭ на ПЛК (На ПЛК110 точно есть).
Надо понимать, что Gateway очень тяжелый, и полезной информации несет в 5-10 раз меньше, чем сопутствующей.
СОответственно время...

Если OPC Gateway, то не стоит - CoDeSys не рекомендует обращение несколькими устройствами к одному контроллеру по Gateway одновременно.

kait-volga
09.11.2011, 16:10
По связи через модем есть отдельные слова в РП и РЭ на ПЛК (На ПЛК110 точно есть).

Пролистал РЭ ПЛК110. Упоминания о использовании одного порта для подключения средой CodeSys и для связи с внешним миром - OPC сервером там нет (как и в других РП и РЭ по ПЛК и ПМ01).


Если OPC Gateway, то не стоит - CoDeSys не рекомендует обращение несколькими устройствами к одному контроллеру по Gateway одновременно.
Есть OPC Lectus и ПЛК100.. Имелось ввиду не одновременное обращение несколькими устройствами, а в разное время: периодический опрос OPC сервером, а при необходимости корректировки программы соединиться средой CodeSys.
Подсознательно я понимаю, что указав порт в codesys.cfg, ПЛК наверняка зарезервирует его для связи по протоколу Gateway и поэтому проигнорирует модуль Modem в конфигурации, настроенный на этот же порт... Но может есть варианты?

kait-volga
09.11.2011, 16:43
судя по пункту 7.2.8 либо по протоколу КДС либо другие протоколы, в том числе и с помощью ОРС
Прошу прощения, пункт 7.2.8 в каком документе?

kait-volga
09.11.2011, 16:50
РЭ_ПЛК110.pdf
Чего то не пойму.
В http://www.owen.ru/uploads/rie_plk110.pdf
7.2 Технический осмотр контроллера проводится обслуживающим персоналом не реже........

Далее....

7.3 Проверку функционирования аккумулятора необходимо производить

kait-volga
10.11.2011, 10:04
В РЭ общие слова о том, что подключение возможно так то и так. Причем согласно таблице 2.2 этого документа, протокол Gatewey поддерживается только RS-232 Debug и Ethernet, а как же загрузка проекта CodeSys по модему через порт RS-232 и RS-485? Ну это лирика.

В общем все щиты управления которые мы устанавливаем, разбросаны по Волгоградской области, а это более 400 км в разные стороны. Вот и хотелось бы иметь возможность удаленного обновления программы. А модем ПМ-01 уже в комплекте стоит, но задействован для связи с OPC сервером Lectus.

Можно конечно поставить второй модем на другой порт и использовать для загрузки проекта... но во первых второй модем, а во вторых не всегда есть свободный порт в ПЛК.

PS Еще мысль есть попробовать GSM модем с интерфейсом Ethernet...

Николаев Андрей
10.11.2011, 10:22
1. Обновление программы только через 232 Debug или Ethrenet.
Если с Ethernet все понятно, то через Debug надо пробовать - вопрос в скорости связи, но опыт такой был. Естественно, что порт Debug должен быть занят только этой задачей (вставлен соответствующий кабель).

kait-volga
10.11.2011, 10:24
я вот прочел следущее
На кабеле КС3 «ПЛК–Модем» необходимо установить переключатель в положение «ON», если ПЛК110 будет использоваться для связи со средой CoDeSys, и в положение «OFF» в случае работы по остальным протоколам.
Т.е. для того что бы настраивать и просто работать, кто то должен подойти и физически "совершить обряд"
Ну это относится только к порту Debug RS-232. Помимо этого надо еще выключить-выключить ПЛК, т.к. он анализирует сей контакт при включении.

Николаев Андрей
10.11.2011, 10:25
:)
По этому я и говорю, что этот порт должен использоваться ТОЛЬКО для программирования...

kait-volga
10.11.2011, 10:31
1. Обновление программы только через 232 Debug или Ethrenet.

А как же:
http://www.owen.ru/uploads/inctrukciya_po_cozdaniyu_udalennogo_podklyucheniya _credoi_codesys_k_oven_plk_cherez_modem.pdf
Загрузка через порт RS-232 (ПЛК100)
Если для подключения к модему используется порт RS-232 ПЛК100 (а не Debug RS-232), то для
подключения к нему модема в режиме CoDeSys необходимо воспользоваться прямым кабелем.
Загрузка через порт RS-485
Для загрузки проекта через интерфейс RS-485 подключите модем к ПК витой парой, соблюдая
полярность А-А, В-В. Для ПМ01 положение переключателей: 1 - on, 2- off.


Если с Ethernet все понятно, то через Debug надо пробовать - вопрос в скорости связи, но опыт такой был. Естественно, что порт Debug должен быть занят только этой задачей (вставлен соответствующий кабель).

Я опробовал через каждый порт и загрузку проекта CodeSys и связь с OPC Lectus, но только одну из задач предварительно настроенную: или в конфигурации модуль Модем или залив в ПЛК файлы CodeSys.cfg и modem.cfg.
А вот мысль про Ethernet связана с тем, что Ethernet не требует предварительной настройки в ПЛК, для загрузки проекта CodeSys, как и не требует никаких физических переключений...

kait-volga
10.11.2011, 10:34
Только через RS-232 Debug как в руководстве не вышло, а получилось как здесь, в последнем посте.
http://www.owen.ru/forum/showthread.php?t=11232

Павел В.
17.11.2011, 14:41
Подскажите, как передавать/принимать с ПЛК160 на СП270 дробные отрицательные числа? Modbus, панель - мастер.

Павел В.
17.11.2011, 15:59
capzap, похоже я запутался в адресации.
Последний адрес регистра Modbus - 62, тип 2 byte, а вот если добавить ещё четыре регистра для двух REAL то адреса для них будут 63 и 65?

Николаев Андрей
17.11.2011, 16:05
Я бы сделал по другому. Пример есть на форуме, где ТРМ1.

Передавайте Word или DWord умноженный на 10 в степени количества знаков после запятой.
А в панели выставляйте количество знаков после запятой.

Павел В.
17.11.2011, 16:55
capzap, извиняюсь, забыл сказать нумерация регистров с 0, т.е. 62 регистр по порядку будет (63), а 63 и 65 будут (64) и (66). Так вот, поле ввода в панели с адресом 65(66), записывается в ПЛК по адресу 63(64). А поле ввода с адресом 63(64) вообще никуда не записывается. Если бы оно перекрывалсь с другими регистрами ПЛК там бы значения менялись, но нет.

S.A.D.
17.11.2011, 16:58
как использовать эти долбаные функциональные блоки? Где и как их объявлять, как использовать переменные? Ни в одном источнике толком подробно ни***на не написано

S.A.D.
17.11.2011, 17:23
с горем пополам ФБ добавил, разобрался вроде, но все равно как сделать чтоб системное время отображалось типа TIME_OF_DAY, иначе дальше больно много гемора если часы и минуты будут 2 разными переменными

S.A.D.
17.11.2011, 17:38
capzap
огромное спасибо вам!!! Вы спасли меня от полной переделки программы)))

S.A.D.
18.11.2011, 16:07
Все преобразовал, но при попытке запустить программу на контроллере возникла проблема: в ФБ не отображаются системное время и дата... Т.е. все параметры остаются по нулям после запуска контроллера. Его надо как-то стыковать с контроллером этот ФБ? Порылся в документации, в кодесисе но не нашел. Подскажите плиз где надо связать ФБ со временем в контроллере?

capzap
18.11.2011, 16:27
http://www.owen.ru/forum/showpost.php?p=23828&postcount=46 попробуйте пример, может он чем поможет, системное время появляется, если предварительно во все поля записать нули

S.A.D.
18.11.2011, 17:31
спасибо за пример - помогло))) теперь вроде все работает, выходные потестю и попробую применять)))
немного настораживает что часы в контроллере отстают....или мне показалось...

ukrainian
20.11.2011, 14:48
Привет всем!

Помогите, подскажите) у меня на руках плк100 и мдвв. пытаюсь их подключить, сделал все как сказано в инструкцыи, связь между плк100 и ПК вижу, между мдвв и ПК через com вижу. Как увидить связь между плк 100 и мдвв в codesyse? каким модулем это сделать?

Только пожалуйста обясните популярно, а то я совсем зеленый в контролерах:)

swerder
21.11.2011, 10:20
сделали же на форуме специально ветку с примерами (http://www.owen.ru/forum/forumdisplay.php?f=49), в которой есть Примеры использования модулей расширения, в частности пример программ подключения модулей МВА8/МВУ8/МДВВ к ПЛК (http://kipshop.ru/Primeri/Modules/02._Samples_MVA8+MVU8+MDVV+PLC.zip)

берете в руки РЭ к МДВВ, находите раздел про подключение плк, находите номера регистров маски входов и выходов, в конфигурации плк добавляете modbus master, делаете интерфейс rs485, настраиваете параметры связи (скорость, четность...), добавляете register input, в нем прописываете адрес регистра с маской входов из РЭ, добавляете register output, далее аналогично.

AlterMann
23.11.2011, 23:01
Здравствуйте.
У меня вопрос по организации памяти в модуле Modbus slave. Скрин конфигурации: http://imglink.ru/thumbnails/23-11-11/a10288dba0b5bdd7de69749c2f0532f6.jpg (http://imglink.ru/show-image.php?id=a5a280043cd3663733b2cfae517c044b)
Интересует, в частности, учитываются ли при выравнивании адресации каналы "Last address", "Last error", "Command". Если да, то по каким адресам будут расположены переменные N_l10S, Tn10S, Tpr10S?
Извиняюсь, если вопрос совсем детский, или где-то уже обсуждался, но чтение документации и метод тыка результатов не дали :( а сроки горят.

Николаев Андрей
23.11.2011, 23:05
Я думаю надо вернуться к чтению РП по программированию. Раздел ModBus Slave.
Адресация начинается с адреса 0.
Регистр (2 байта) занимают один адрес.
Real (4 байта, 2 регистра) занимают 2 адреса, и всегда с четной цифры.
Например:
Регистр 1 - адрес 0
Регистр 2 - адрес 1
Регистр 3 - адрес 2
Real 1 - адрес 4 (адрес 3 останется пустым) - это и есть выравнивание.

По этому всегда рекомендую добавлять переменные начинаться самых маленьких: 8 bit, registr,Float.

AlterMann
23.11.2011, 23:13
Спасибо за оперативность. Просто на ночь глядя уже туго соображаю. Все же считать адреса нужно начинать с "Last address", или с "N_l10S"? Просто контроллеров сейчас под рукой нет, чтобы проверить, а хотелось бы этот момент для себя прояснить.

Николаев Андрей
24.11.2011, 09:38
Читаем мат. часть...
LastAdress и Last Error - это сервисные сообщения, ВЫДАВАЕМЫЕ контроллером, чтобы Вы могли анализировать качество и стабильность обмена.

swerder
24.11.2011, 10:09
все никак не пойму, зачем люди пихают master в slave либо slave в master:confused:

Николаев Андрей
24.11.2011, 14:57
все никак не пойму, зачем люди пихают master в slave либо slave в master:confused:

+1.
Однако каждый сам кузнец своего счастья...

AlterMann
24.11.2011, 16:56
Читаем мат. часть...
LastAdress и Last Error - это сервисные сообщения, ВЫДАВАЕМЫЕ контроллером, чтобы Вы могли анализировать качество и стабильность обмена.
Ясно, будем пробовать.
А мастер в слейве - попытка организации шлюза, т.к. контроллер с этой конфигурацией должен одновременно работать с другим ПЛК и СП270, при этом не хотелось "вручную" копировать переменные.
Да, и как там ... "я не волшебник, я только учусь" :)

swerder
24.11.2011, 18:14
не хотелось "вручную" копировать переменные.

сэкономили 10 минут на этом, потратили кучу времени на выяснение почему этот шлюз не работает.

AlterMann
24.11.2011, 18:25
Может быть, может быть. Но является ли такой прием вкорне неправильным? Мне кажется, с точки зрения быстродействия он более эффективен. Нет?

AlterMann
24.11.2011, 18:43
К сожалению, только в процессе отладки и ни в чем не уверен. Проблемы есть. Не знаю... Может сделать по-другому? Просто опыта нет, вот экспериментирую.

AlterMann
24.11.2011, 18:54
Проще это создать отдельный мастер и отдельный слейв и в программе копировать переменные из одного в другой? Бум пробовать :)

AlterMann
24.11.2011, 19:17
Понял, попробую. Спасибо.

drvlas
25.11.2011, 01:09
Подозреваю, что ответ прост, но туплю бешенно. Вопрос касается ПЛК100, но намеренно помещаю его здесь, ибо хочу решить задачу методом, не зависящим от ПЛК.

Так вот, вопрос: как сделать так, чтобы ПЛК стартовал "с чистого листа" при любом пропадании питания?

Дело в том, что ПЛК100 имеет такое свойство - пробовать поддерживать состояние переменных некоторое время после выключения питания. Цель у авторов была благородной, но мне это не только ни к чему, но вообще вредит. Хочу, "чтобы окна открывались мышью" :) Хочу, чтобы даже кратковременное пропадание питания приводило к полному перезапуску процессора, к установлению начальных значений переменных. Зачем мне это - другой вопрос. Хочу.

А пока вижу, что поведение программы при выключении на несколько секунд и несколько минут - различно. И это мешает.

Спасибо!

Николаев Андрей
25.11.2011, 09:26
if "тригер по переднему фронту"(power) then
....
Программа
....

if "тригер по заднему фронту"(power) then
...

drvlas
25.11.2011, 09:27
модуль статистика Вам в помощь, а именно Power Status
Спасибо. А так, чтобы и доцент понял, нельзя?

swerder
25.11.2011, 10:42
конфигурация плк > добавляете модуль statistic
там будет бит power status

drvlas
28.11.2011, 20:34
конфигурация плк > добавляете модуль statistic
там будет бит power status
ОК, давайте разбираться. Создал с нуля проект. Прилагаю. В нем есть всего ничего: в PLC_PRG один оператор ";" и в Конфигураторе ПЛК добавил модуль статистики.

При запуске на реальном ПЛК100 вижу в модуле статистики одни нули. Ни время цикла, ни температура в ПЛК, ни какая из иных переменных не работают.

Вопрос к знатокам: что сделал неправильно?

Вопрос к опытным: кто использовал модуль Статистики?

Спасибо!

5123

nalnik
28.11.2011, 20:38
При запуске на реальном ПЛК100 вижу в модуле статистики одни нули.

Прошивка в ПЛК не совпадает с таргетом CDS

После замены прошивки или таргета надо удалить и вставить снова модуль статистики или создавать новый проект.

Николаев Андрей
28.11.2011, 20:48
Удалите старый Target с помощью указанной ранее утилиты.
Скачайте новый Target, соответствующий Вашей прошивке. Установите его. http://www.owen.ru/catalog/78552813

drvlas
28.11.2011, 21:23
Удалите старый Target с помощью указанной ранее утилиты.
Скачайте новый Target, соответствующий Вашей прошивке. Установите его. http://www.owen.ru/catalog/78552813
После чего открываю проект и должно быть все чики-пики?

Ругается на отсутствие директорий... Как здесь все нелогично, понять невозможно, запомнить не откуда.
Ладно, прочь эмоции.
Рассказываю по пунктам. Кое-что уже вспоминаю, могут быть мелкие неточности.

1) Запустил InstallTarget. Первый вопрос: вот то поле сверху с надписью Installation directory - это что? Какую директорию туда надо записать?

2) Ну, пока удаление, то можно и не знать правильного ответа. В поле Installed Targets отмечаю последовательно все пункты из папки Owen

3) скачиваю файл
Install_Target_v.2.10_for_PLC100_PLC150_PLC154.exe
Источник: http://www.owen.ru/catalog/78552813#t20c

4) запускаю его. Указываю ему путь C:\codesys - именно там была папка targets с кучей папочек PLC100.K-L и т.д.
Вроде как устанавливает. Создав при этом директорию с долгим именем Target_v.2.10_for_PLC100_PLC150_PLC154
Переименовую ее в Targets, чтобы было все как раньше.

ДОБАВЛЕНО: При запуске InstallTarget вижу, что установлены все таргеты (полный список из скачанных с сайта ОВЕН). То есть, думаю, что таргеты установлены...

5) При запуске проекта пишет "Ошибка чтения информации целевой платформы"
Какого?
Даю ОК, хотя уже вижу, что не ОК
Открывает проект и пишет "Ошибка при чтении конфигурации ПЛК! Файл описания модуля 'Module Root' не найден. Изменить конфигурационную директорию?"

6) Что изменять?
И что такое этот Module Root?

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

Николаев Андрей
28.11.2011, 22:49
Ничего канонически распределять не надо.
У Вас сменился Target - сменилось распределение данных в PLC Configuration.
Заходим в настройки целевой платформы - выбираем свой тип ПЛК.
Переходим в неё родимую (конфигурацию ПЛК), и из меню дополнительно делаем команду - стандартная конфигурация.
Вуаля.

Одна беда - конфигурация сбросится...

drvlas
28.11.2011, 23:03
Одна беда - конфигурация сбросится...
Огошеньки!!! Спасибо вам большое в шляпку, как говаривали в Одессе :(
Не придумали же еще способа без ручек обходиться?
Серьезно, уважаемый Николаев Андрей, можно было предупредить. Я ушел от такого рецепта, когда мне его в другой ветке предлагали, а тут напоролся по полной.

Прав был Валенок: поменьше пользоваться штатным Конфигуратором.

А если я снесу эти новые таргеты, будь они неладны, и восстановлю старые? Перестанет ругаться КДС? Или обиделась навеки?
Но тогда вопрос: как же заставить ПЛК сбрасываться тотчас же по выключению питания? Или залезть в него и выбросить аккумулятор нафик?

Николаев Андрей
28.11.2011, 23:44
Если снесете, и поставите старый, все будет ок.
По другому в явном виде никак.
Можно изгаляться с релюшками промежуточными и анализировать состояние дискретного входа, но это все...

drvlas
29.11.2011, 00:19
Андрей, а там сложно долезть до аккумулятора? Прав ли я вообще в том, что его можно отключить и (если в проге нет ни одной РИТЕЙН-переменной) все будет работать нормально?

Николаев Андрей
29.11.2011, 10:46
Андрей, а там сложно долезть до аккумулятора? Прав ли я вообще в том, что его можно отключить и (если в проге нет ни одной РИТЕЙН-переменной) все будет работать нормально?

Все правильно, но есть еще одно но -часы реального времени тоже не сохраняются...

Николай- ЧМЗ-Глазов
30.11.2011, 22:23
Здравствуйте. Пишу диплом по автоматизации. Программа написана, теперь листинг надо вставить в текст пояснительной записки. Ничего не получается(((. Что делать!! Листинг хотелось бы в LD.

Gans
30.11.2011, 22:31
Здравствуйте. Пишу диплом по автоматизации. Программа написана, теперь листинг надо вставить в текст пояснительной записки. Ничего не получается(((. Что делать!! Листинг хотелось бы в LD.
Скриншот Вам в помощь (Alt+PrtSc), а затем в «Paint» или что покруче.
P. S. В «ворде» есть кнопка (панель «Настройка изображения») с её помощью можно лишнее обрезать прямо в «ворде» :-)

Николай- ЧМЗ-Глазов
30.11.2011, 23:53
Дык это же диплом, тут всё по ГОСТу надо, в рамке, шрифтом, интервалом там....короче не всё так просто

Gans
01.12.2011, 08:07
Мне кажется, что Вы собираетесь применять ГОСТЫ от оформления релейных схем к листинг программы? Или уже есть ГОСТ на оформления листинга? Наверное стоит вставить как есть и пронумеровать как Рис. 1 - Рис.59.
Или вынести в приложение и попытаться оформить, так что бы преподам глаза не резало - тогда это Вам в автокад и тд - то чем умеете пользоваться.
P. S. Поговорите с преподом может все обойдется ;-)

swerder
01.12.2011, 09:47
Николай- ЧМЗ-Глазов текстовые программы вставляйте текстом, графические программы вставляйте картинками. у нормконтроля нет официально закрепленных требований к листингу.

Николай- ЧМЗ-Глазов
01.12.2011, 10:16
Значит в среде CoDeSys нет опций по копированию текста программы? Сам искал, но смог только листинг скопировать на IL.

Gans
01.12.2011, 10:46
Значит в среде CoDeSys нет опций по копированию текста программы?
Здравствуйте Николай.
Копирование есть для любого куска программы, но вот вставлять скопированное корректно на 100% только в CoDeSys. Полностью согласен с Swerder: текстовые программы копируйте как текст, а графические языки программирования (в том числе и LD) вставляйте как картинки.
P. S. Желаю успешно защитить диплом и не забудьте все спорные нюансы согласовать с преподом ;-) Удачки.

Николаев Андрей
01.12.2011, 11:18
1. Программный код в дипломе ОБЯЗАТЕЛЬНО оформляется как приложение, и закрепляется в конце диплома.
2. В CoDeSys есть возможность вывода программы на печать. Используйте не принтер, а экспорт в pdf или другие "бумажные принтеры".

Почитайте мануал по CoDeSys, раздел посвященный основному меню. В частности файл и проект.

Николаев Андрей
01.12.2011, 11:20
1. Программный код в дипломе ОБЯЗАТЕЛЬНО оформляется как приложение, и закрепляется в конце диплома.
2. В CoDeSys есть возможность вывода программы на печать. Используйте не принтер, а экспорт в pdf или другие "бумажные принтеры".

Почитайте мануал по CoDeSys, раздел посвященный основному меню. В частности файл и проект.

З.Ы.:
Некоторые приложения к диплому не только в диплом подкрепляются, но и отдельно распечатываются, если члены компании захотят их посмотреть. Я распечатывал 3 приложения (по 4 экземпляра).

Николай- ЧМЗ-Глазов
01.12.2011, 20:43
Мне в принципе нужно количество листов набрать близкое к ста. Текст программы я решил написать не в приложения, а в отдельный раздел-Разработка программы работы контроллера в различных режимах. Писать всё-таки буду на IL, точнее конвертирую c FBD. Рядом с каждой строкой описание действия выполняемого программой. Так наверное будет правильнее. P.S. Кстати проект разрабатывал только на Овеновских приборах, так сказать для поддержки отечественного производителя)))

Nerd
03.12.2011, 14:14
Добрый день.
Впервые пользую, КодеСиС, возникает куча вопросов "дурацких", может кто поможет. Версия 2.3.9.9 руссифицированн.
1. Не работает (Копипаст Ctrl+c) ?
2. Непонятен момент в режиме эмуляции:
out1:=in1; (*VAR BOOL*)
состояние TRUE не передаётся из in1 в out1.
как вобще увазывать реальные порты ввода вывода ?
3. толковые "последовательные" мануалы по ST где искать ?

Николаев Андрей
04.12.2011, 02:02
1. К сожалению особенность CoDeSys Ctrl + Ins Shift + Ins работают.
2. Если Вы привязали переменные к реальным входам - чему удивляетесь, Вы же в режиме эмуляции...
3. Толковых и последовательных почти нет. Что могу порекомендовать: Сайт CoDeSys.ru - там есть первые шаги. Мануал по CoDeSys. Книга И.Петрова.

Пьер
12.12.2011, 08:48
Программа написанная на языке CFC, в процессе модернизации стала неадыкватно себя вести, то работает, то нет.
В данный момент не работают триггеры (F_, R_) и при подача токового сигна 2.5 мА на AI1, AI2 и т.д. в конфигураторе показывает 10 мА (в 4раза больше).
Причем, загружаю старую прогу (немного раннюю версию) все отлично.
Вопрос: КАК РЕШИТЬ ДАННУЮ ПРОБЛЕМУ! ОЧЕНЬ не хочется переписывать все с нуля. СПАСИБО!

Александр Приходько
12.12.2011, 10:25
Программа написанная на языке CFC, в процессе модернизации стала неадыкватно себя вести, то работает, то нет.
В данный момент не работают триггеры (F_, R_) и при подача токового сигна 2.5 мА на AI1, AI2 и т.д. в конфигураторе показывает 10 мА (в 4раза больше).
Причем, загружаю старую прогу (немного раннюю версию) все отлично.
Вопрос: КАК РЕШИТЬ ДАННУЮ ПРОБЛЕМУ! ОЧЕНЬ не хочется переписывать все с нуля. СПАСИБО!

1) Конечно в Codesys могут быть ошибки, но так чтобы проект не работал в целом - врядли. Как вариант скачайте с нашего сайта версию 2.3.9.30, если ваша более старая.
Советую перед заливкой проекта в ПЛК выполнить два пункта в меню "проект" это "очистить все" и затем "Комилировать все".
2) Что касается особенности операторов CFC: очень важен их порядок и расположение. В графическом редакторе ЛКМ и выбираем Порядок-> В соответствии с потоком данных. Проверяем код программы отладочными средствами. Фокусов не бывает.
3) Если сигналы - +4..+20мА отражаются не корректно, то может быть несколько проблем:
- В конфигурации не верно задано масштабирование
-слетела калибровка ПЛК (например, ПЛК перепрошивали).
-берем мультиметр и измеряем показания датчика.

Пьер
13.12.2011, 09:11
1) Как вариант скачайте с нашего сайта версию 2.3.9.30, если ваша более старая.
Советую перед заливкой проекта в ПЛК выполнить два пункта в меню "проект" это "очистить все" и затем "Комилировать все".
2) Что касается особенности операторов CFC: очень важен их порядок и расположение. В графическом редакторе ЛКМ и выбираем Порядок-> В соответствии с потоком данных. Проверяем код программы отладочными средствами. Фокусов не бывает.
3) Если сигналы - +4..+20мА отражаются не корректно, то может быть несколько проблем:
- В конфигурации не верно задано масштабирование
-слетела калибровка ПЛК (например, ПЛК перепрошивали).
-берем мультиметр и измеряем показания датчика.

Версия 2.3.9.6;
Очистить и Компилировать все не помогло;
С масштабированием AI все нормально, Масштабирование равно 0;
При проверке проекта нашли логическую ошибку (некоторые элементы противоречили друг другу). Эту ошибку исправили, но аналоговый вход AI показывал в 4 раза больше заданного значения (проверяли мультиметром).
ОДНАКО, когда создали проект заново, полностью аналогичный первому, то все правильно заработало.

PRO
15.12.2011, 13:51
Две PRG разработаны на SFC (стандартный) использующие одни и те же выходы ПЛК, PLC_PRG разработан на FBD. Что делать если в одной из программ шаги отрабатываются, а выходы на ПЛК нет, по отдельности программы работают нормально.

PRO
15.12.2011, 16:13
Программы расположены в FBD последовательно и та которая находится ниже работает нормально, а верхняя по цепочке отрабатывает шаги но на выходах ПЛК срабатывания реле нет. Если переставить местами программы в FBD, то программа которая была сверху, а теперь снизу работает нормально, верхняя "нещёлкает". Скорее всего переменные выходов захватываются нижней по цепи программой и верхняя их не видит.
Как обойти эту ситуацию.

Елена_23
19.12.2011, 05:15
Здравствуйте. подскажите пожалуйста как быть:( я работаю с ПЛК154, при подключении к ПЛК блок расширения МУ110-8И не могу разобраться с адресами которые присваивают каждому входу:( мне нужно на прямую подать сигнал(4-20мА) с МВ110-8А на МУ11-8И. Сигнал не проходит транзитом:( Никакой документации подключения МУ110-8И к ПЛК я найти не могу. Подскажите как быть?????:(

Елена_23
19.12.2011, 09:13
у меня есть эта документация:) я в Codesys не знаю как прописать в конфигурации ПЛК этот модуль расширения!!!)

capzap
19.12.2011, 11:36
http://www.owen.ru/uploads/rie_mu110-8i_889.pdf
таблица В.4 стр.33
на первый выход значение от 0 до 1000, нулевой регистр и т.д.
В КДС в конфигураторе создаете мастер модбас все тоже по книжке PLC_Configuration_OWEN.pdf, создаете из пункта 3.2.1. Модуль «Универсальное устройство Modbus (Master)», внем Register Output Module c функцией записи write multiple registers (0x10) и номером регистра 0
Как то так должно заработать

Елена_23
20.12.2011, 04:07
Спасибо, что помогаете разобраться:) Но я тоже так делала:( мне пишет ошибку: невозможно преобразовать REAL в WORD. мой сигнал 4-20мА должен подаваться транзитом с одного модуля на другой. Я подключила калибратор к модулю ввода, а к модулю вывода регистратор Метран 910, в Codesys на языке LD выбрала функциональный блок MOVE, сделала все так как было написана в руководстве. И ничего:( если подключить регистратор к одному из выходов контроллера сигнал проходит, все ровно все показывает, приборы все исправны! С модулем расширения ну ничего не получается!:confused:

Елена_23
20.12.2011, 04:21
Словно выхода эти не получают сигнал, не доходит он...не прописано что то где то:( я вот и понять не могу где:( пичаль...

Елена_23
20.12.2011, 08:45
я вам в личку написала)

Nerd
20.12.2011, 12:45
Подскажите:
После установки CodeSYS 2.3.8.1 ненаходит библиотеки:
SYSLIBTIME.lib
SYSTASKINFO.lib
SYSLIBCALLBACK.lib
и пр...

Где можно скачать всё до кучи?

Не отображаются Русские шрифты, как лечется ?

Nerd
20.12.2011, 12:55
Как в проекте поменять тип контроллера ?

swerder
20.12.2011, 13:16
Подскажите:
После установки CodeSYS 2.3.8.1 ненаходит библиотеки:
SYSLIBTIME.lib
SYSTASKINFO.lib
SYSLIBCALLBACK.lib
и пр...

Где можно скачать всё до кучи?

Не отображаются Русские шрифты, как лечется ?

скачивается отсюда (http://kipshop.ru/CoDeSys/2.10.30/CoDeSys_v23930.exe) актуальная версия КДС и все проблемы как рукой снимет
по второму вопросу: вкладка ресурсы, настройки целевой платформы, ваш тип, ok, да, конфигурация плк, меню дополнения, стандартная конфигурация

Nerd
22.12.2011, 11:28
Ага, спасибо.
*.lib файлы после установки новой версии кодесис нашлись в (program files\CAA-Targets\3S\LIB_PLCWinNT\), я их переложил в папку Library каталога CodeSYS.... Хз правельно или нет, но семплы проектов стали открываться, с руганью что библиотеки были изменены ???

Есть ли внятный мануал по ST с примерами...

Собственно задача сделать что то типа:
7. Пример использования SysLibTime. Подсчет времени наработки станка.
Сам пример на IL можно ли его сконвертить в ST.

Nerd
22.12.2011, 11:57
"Изменение IP'адреса контроллера возможно при помощи команды SetIP, подаваемой через PLC'Browser."
Кто такой ПЛС'Броузер, и где его искать ???

Блин, вобще куча вопросов возникает, а мануал весь на 45 листах....
PLC Шаг за шагом, ничего такого нет у Овена?

swerder
22.12.2011, 13:20
"Изменение IP'адреса контроллера возможно при помощи команды SetIP, подаваемой через PLC'Browser."
Кто такой ПЛС'Броузер, и где его искать ???

кдс, вкладка ресурсы, плк-браузер.


Блин, вобще куча вопросов возникает, а мануал весь на 45 листах....
PLC Шаг за шагом, ничего такого нет у Овена?

CoDeSys_V23_RU.pdf на диске плк

Nerd
22.12.2011, 13:27
CoDeSys_V23_RU.pdf на диске плк

Мммм, диск не читается, на сайте не нашёл, Google непомог..(((

Nerd
22.12.2011, 13:36
кдс, вкладка ресурсы, плк-браузер.
Да уж.
Я так понял что синтаксис этог инструмента тоже был на диске PLC_Browser_OWEN.pdf.
Вобщем с сайта я скачал РЭ_ПЛК100.pdf, на 41 стр. мануала было найденно
"Перечень электронных документов, необходимых для начала работы с контроллером ОВЕН ПЛК" .... Где их можно скачать на сайте ??

Yegor
05.01.2012, 18:51
Как сделать свою функцию с переменным числом аргументов?

Валенок
05.01.2012, 22:19
Нету тут такого. Если плющит - указатель на список

Yegor
06.01.2012, 00:21
ADD и MUX — исключения?

Валенок
06.01.2012, 00:39
Типа того. Свою так не сделаете

Коля О
07.01.2012, 16:54
Здравствуйте! Подскажите пожалуйста как можно использовать ПК в качестве HMI в ПЛК-160 без открытия программы. В описании CoDeSys и на диске с ПЛК упоминается вскользь CoDeSys визуализация (типа демо версия и т.д). То есть я так понимаю что полноценной программы с ПЛК не поставляется?

lara197a
07.01.2012, 18:08
HMI-демо версия. Время работы 1 час. Через час требуется перезапуск. Др. ограничений нет. Лицензию можно приобрести в "Пролог". Описание в справке КДС.
Или используйте любую бесплатную скаду.

Коля О
13.01.2012, 23:52
Спасибо за помощь!

Коля О
15.01.2012, 19:45
Здравствуйте! Подскажите пожалуйста если в ПЛК-160 для связи с компьютером использовать SCADA, то как объявлять переменные которые будут видны в SCADA - глобальные или сетевые?

Николаев Андрей
16.01.2012, 09:40
Смотря как будете настраивать связь.
Если через OPC CoDeSys - то не принципиально.
Если по ModBus, то переменные добавляются в конфигурацию ПЛК, и таким образом автоматически становятся глобальными

S.A.D.
24.01.2012, 20:04
Прошу совета. Имеются переменные типа string, приходящие из scada. Описаны в глобальных переменных. (пока работаю через codesys opc,т.к. не могу разобраться с адресацией в lectus opc по modbus). При пропадании питания на ПЛК переменные обнуляются. Можно ли сделать запись этих переменных в энергонезависимую память? Если можно то как? И что будет проще: записать в энергонезависимую память или проверка условия в скада (IF <var1>не равно <нужное значение> then отправка значений.

Извиняюсь если некорректно изложил мысль.

И еще в догонку)) Как в PLC_PRG объявить программу? С FB все ясно, а PRG так не объявляется, всю справку перерыл - не могу найти((

Валенок
24.01.2012, 21:57
Вы нас пугаете.

1.Сделайте их global retain

var global retain
s : ..
var не ретайн
init : bool

_s - в области обмена

if not init then
init := true;
_s := s;
end_if
s := _s;


2.А зачем её объвлять ? Описали и вызывайте

skodafelicia
24.01.2012, 22:03
Подскажите, как лучше всего в ПЛК 100 организовать учет наработки оборудования в маш\часах. Естественно, старт\стоп будет программный...

Валенок
24.01.2012, 22:09
Считайте секунды

S.A.D.
24.01.2012, 22:21
Вы нас пугаете.

1.Сделайте их global retain

var global retain
s : ..
var не ретайн
init : bool

_s - в области обмена

if not init then
init := true;
_s := s;
end_if
s := _s;


2.А зачем её объвлять ? Описали и вызывайте
спасибо, прошу прощения за тупые вопросы. Просто для меня все что делаю в новинку, всему учусь.

Ну без объявления не получается.
пытаюсь записать из PLC_PRG в переменную программы значение таким образом: LOGIC.UTRO1:=STRING_TO_TOD(UTRO_1); при компиляции выдает:
"Операндом для 'ST', 'STN', 'S', 'R' должна быть переменная или прямой адрес доступные по записи"
Замените первый операнд переменной, имеющей доступ на запись.
В FB решалось описанием переменной UTRO1 в VAR_INPUT. А тут как быть не пойму.

Валенок
24.01.2012, 22:30
А вы её, родимую, и в program сделайте var_input

S.A.D.
24.01.2012, 22:42
А вы её, родимую, и в program сделайте var_input

ура)) спасибо вам огромное. Я дурак, не догадался попробовать вручную написать раздел VAR_INPUT в PRG. Теперь буду знать))) Спасибо вам)

skodafelicia
24.01.2012, 22:43
Считайте секунды

Типа:


VAR_GLOBAL RETAIN
TOTAL_HOURS: DWORD := 0;
END_VAR

VAR
bl1: BLINK;
ctu1: CTU;
END_VAR

bl1(ENABLE:=IS_START,TIMELOW:=T#500ms,TIMEHIGH:=T# 500ms);
ctu1(CU:=bl1.OUT,PV:=3600);
IF ctu1.Q THEN
TOTAL_HOURS:=TOTAL_HOURS+1;
END_IF
?

Валенок
24.01.2012, 22:51
Счетчик не ретайн - будете терять остаток
И сброс его где ?

skodafelicia
24.01.2012, 22:59
Счетчик не ретайн - будете терять остаток
И сброса его где ?
Остаток - еще хз, а нужен-ли он мне ))
Счетчик при кратковременном выключении питания сохраняется?

уже потестил, сброс дописал ))

bl1(ENABLE:=IS_START,TIMELOW:=T#500ms,TIMEHIGH:=T# 500ms);
ctu1(CU:=bl1.OUT,RESET:=FALSE,PV:=10);
IF ctu1.Q THEN
TOTAL_HOURS:=TOTAL_HOURS+1;
ctu1(RESET:=TRUE);
END_IF

С другой стороны - DWORD секунд это 136 лет? Я правильно посчитал?
Может тогда секунды и хранить в ретайн?


VAR
bl1: BLINK;
ft1: F_TRIG;
END_VAR

bl1(ENABLE:=IS_START,TIMELOW:=T#500ms,TIMEHIGH:=T# 500ms);
ft1(CLK:=bl1.OUT);
IF ft1.Q THEN
TOTAL_SECS:=TOTAL_SECS+1;
END_IF

UPD: А можно просто раз в секунду через конфигуратор задач вызывать
IF IS_START THEN TOTAL_SECS:=TOTAL_SECS+1;
?

Валенок
24.01.2012, 23:07
Остаток - еще хз, а нужен-ли он мне ))
30м + 1ч50м + 3ч40м - наработка 4 часа


С другой стороны - DWORD секунд это 136 лет?
Может тогда секунды и хранить в ретайн?

Думаете праправнуки непростят ? Нормуль.

skodafelicia
24.01.2012, 23:11
30м + 1ч50м + 3ч40м - наработка 4 часа

Да, действительно... несколько раз по 55 минут потерять - уже существенно...
Спасибо ) Буду секунды хранить...

Валенок
24.01.2012, 23:21
через конфигуратор задач вызывать
Цель - достигается

swerder
25.01.2012, 10:01
выскажу свое "фи" по поводу использования blink'a для счетчика часов - при его использовании за каждый период счета посчитанное время расходится с реальным на 2 цикла плк. к примеру если цикл плк у вас 5мс, то при счете секунд будет расхождение на 10мс за секунду. на дистанции использования нескольких лет итоговое расхождение будет уже внушительным. хотя кому-то не важно.
я делал счетчик другим способом (исходя из того, что мой плк уж точно не проработает более 49 суток без выключения):


VAR
metronom: DWORD;
tmr_Ah: TON := (PT := t#49d);
END_VAR
VAR RETAIN
counter : dword; (* секунды наработки *)
END_VAR

tmr_Ah(in := переменная_power_status_из_модуля_статистики);
IF metronom < (TIME_TO_DWORD(tmr_Ah.ET) / 1000) THEN
metronom := (TIME_TO_DWORD(tmr_Ah.ET) / 1000);
counter := counter + 1;
end_if;

Валенок
25.01.2012, 11:19
использования blink'a для счетчика часов - при его использовании за каждый период счета посчитанное время расходится с реальным на 2 цикла плк.
Ну может расхождение в 1% не так критично как десятки % в п#538 ?

Мой обычный рабочий вариант

t( in := true, pt := t#1s ); (*тон*)
if t.q then
t( in := false ); (*перезапуск в этом же цикле );
t( in := true );
sec := sec + 1; (*ретайн*)
end_if

Конечно же цикл кратен секунде (1,2,4 мs)

swerder
25.01.2012, 18:20
опять же кому как нравится. мне хватило того, что за десять минут у меня расхождение таймера и блинка с периодом в секунду достигло 10 секунд. в моем понимании вопрос в том, зачем использовать неточный вариант при наличии точного, который не сложнее по реализации.

Валенок
25.01.2012, 22:17
Полностью согласен

Валенок
25.01.2012, 22:41
Да понятно всё. Вместо power_status в in пихаем соотв. выход
Не наработка же ПЛК интересует :)

skodafelicia
26.01.2012, 08:49
это Вы все еще про наработку разговоры говорите, а как паузы во время процесса реализуете, а то вопроситель как бы упомянул о программных включениях и выключениях

С этим как раз все понятно...

По поводу точности: у уважаемого swerder-а тоже есть ограничение в 49 суток (только не понял и хотелось-бы уточнить: работы ПЛК или тех. процесса?).
А что скажете о точности при вызове процедуры счета из конфигуратора задач?
Лично в моем случае (задача по сути сбор статистики и отработка аварийных ситуаций для дробильной установки) работа самого техпроцесса даже в теории не более 12 часов, но в принципе при определенных условиях думаю 49 суток без потери питания тоже теоретически возможно. И потеря 1,5% в моем варианте не столь критично. Да и если стабильное отклонение в 2 цикла, то при определенном времени цикла можно минимизировать эти потери, сделав блинк не 500мс, а рассчитать нужный... даже программно.
Да и часы реального времени в ПЛК тоже вроде не блещут точностью ))

capzap
26.01.2012, 09:21
Функция TIME() возвращает время в миллисекундах от начала работы системы в формате TIME (работы ПЛК)
Максимальное значение длительности: t#49d17h2m47s295ms
Выполните такое преобразование TIME_TO_DWORD(T#49d17h2m47s295ms); и сравните с верхним пределом из таблицы элементарных типов данных у DWORD

swerder
26.01.2012, 10:30
есть ограничение в 49 суток (только не понял и хотелось-бы уточнить: работы ПЛК или тех. процесса?).


49 суток это ограничение работы самого таймера, через время pt := t#49d таймер остановится. прекратится счет наработки. у меня даже теоретически станок не проработает столько без выключения, поэтому над другими решениями голову не ломал, хотя способ Валенка вроде бы лишен этого ограничения.

Валенок
26.01.2012, 11:00
над другими решениями голову не ломал, .
Нормально. Перезапуск по Q и обнуление metronom - это же делает и передергивание питания
PT можно поставить любое - хоть 1 день

Al-08
26.01.2012, 11:41
Добрый день.
Может кто подскажет как сконектить ПЛК110-30М с LECTUS по TCP/IP
Заранее благодарен.

skodafelicia
26.01.2012, 15:45
над другими решениями голову не ломал, .

Я решил поломать )
Во вложении - результат
stat_count вызывается из основной программы, stat1 - раз в секунду из конфигуратора задач
q1 - q4 - отклонения...
В ПЛК крутится небольшая программка: опрос пары датчиков температур по 485 с МВА, вывод на ИП320 + моргание парой выходов
Какое решение использовать - решать Вам ) Думаю вполне все нормально считают. Кстати, в эмуляторе расхождения были на порядок больше даже уже за пять минут, только решение swerder-а показывало нулевое отклонение...

Валенок
26.01.2012, 16:05
Swerder - 1 место !!!

Насчет эмулятора - у него цикл 50..70мс и нестабильный, средняя ошибка в полцикла - 2-3%
И любопытно - какой minlengthcycle, и что показывает про длительность цикла statistic при обмене по 485 ? :)

skodafelicia
26.01.2012, 16:18
Перегрузка - из-за процедуры stat_count

b_gennady
26.01.2012, 16:47
Непонятно работа оператора JMPC. Простой пример: при наличие true на входе DI1, y=true, x=false. При DI1=false, наоборот. У меня всегда х=true, y=false. В чем ошибка?

swerder
26.01.2012, 17:31
skodafelicia молодец! :) теория, подкрепленная экспериментом уже правило.

Swerder - 1 место !!!

Ура!

skodafelicia
27.01.2012, 08:05
И любопытно - какой minlengthcycle, и что показывает про длительность цикла statistic при обмене по 485 ? :)

Кстати, забыл уточнить - опрос ДТ по 485 раз в 0,5 сек )) Длительность цикла прыгала 10-12...

lpv22
30.01.2012, 18:06
Всем доброго вечера!
Подскажите, пожалуйста, библиотека PID_reg2 применима только для контроллеров ПЛК 63, 73, 410? У меня в наличии ПЛК160..., получается, что эта библиотека не подходит?

RV9WFJ
02.02.2012, 09:36
Подходит для всех ПЛК

Николаев Андрей
02.02.2012, 10:30
Подходит для всех ПЛК

Данная библиотека работает только на ПЛК63 и ПЛК73. Что в явном виде отображено в документах, описывающих работу с данной библиотекой.

anatolys
02.02.2012, 18:14
доброго вечера.

в поиск ходил, не нашел. контроллер ПЛК-110-60, пишу под него программу, столкнулся с такой штукой. пишем вот так:

PROGRAM PLC_PRG
VAR
tp1:TP;
tp2:TP;
END_VAR

tp1(in:=start, pt:=t#4s);
ek1:=tp1.Q;

tp2(in:=stop, pt:=t#4s);
ek1:=tp2.Q;


start и stop - два аппаратных входа DI1 и DI2, ek1 - аппаратный выход, скажем, DO5. в конфгурации ПЛК определены.

как я себе представляю логику работы:
подаю на один из входов единицу, запускается таймер TP, перещелкивает аппаратный выход в 1 на заданное время, потом возвращает выход обратно в 0.
соответственно, от второго входа реакция должна быть та же самая, только вход другой.

что происходит:
железом отрабатывается только вторая часть программы. выход щелкает только при появлении 1 на входе stop. после того, как таймер свое отработал, я подаю 1 на вход start, это приводит к срабатыванию таймера. кодесис в режиме онлайн показывает мне, как выход первого таймера сработал, но при этом аппаратный выход не срабатывает. попытка вручную включить выход в конфигурации ПЛК приводит к тому, что что-то упорно держит его в нуле и не хочет отпускать.

вопрос: что держит выход в нуле, что я делаю не так, и как избежать подобного рода вещей в будущем ?

kolyan
02.02.2012, 18:32
доброго вечера.


вопрос: что держит выход в нуле, что я делаю не так, и как избежать подобного рода вещей в будущем ?

Ошибка Ваша в том, что в конце программы у Вас опять повторяется строка с присвоением:
ek1:=tp2.Q;
И, когда Вы пытаетесь первым TP присвоить значение на выход, ПЛК доходит до последней строки, но там TP2 ещё не срабатывал и присваивает на выход FALSE.

Программа примерно должна выглядеть так:

tp1(IN:=start , PT:= t#4s, );

tp2(in:=stop, pt:=t#4s);

ek1:=tp1.Q OR tp2.Q;

В этом случае, выходу присвоится значение TRUE при срабатывании ТР1 ИЛИ ТР2.

anatolys
02.02.2012, 20:16
Ошибка Ваша в том, что в конце программы у Вас опять повторяется строка с присвоением:
ek1:=tp2.Q;
И, когда Вы пытаетесь первым TP присвоить значение на выход, ПЛК доходит до последней строки, но там TP2 ещё не срабатывал и присваивает на выход FALSE.


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

anatolys
02.02.2012, 20:38
вот они, куски кода. блок на ST. то, откуда он множественно вызывается, на CFC, и в остальной части программы таких вызовов блока много. как, кстати, правильно сбрасывать TP, и правильно ли я понимаю, что, написав необходимое количество блоков с вызовами TP, я в конце каждого блока этот таймер сбрасываю, и тогда оно начинаетработать, как надо ?

anatolys
02.02.2012, 21:02
я только начинаю, по большому счету, осваивать ПЛК, не всегда еще понимаю логику его работы. мне почему-то подумалось, что, если я смогу привести вырожденный пример, то это не будет сильно отличаться от того, что есть на самом деле. я о том, что я получил одинаковый эффект от двух несколько разны, получается, действий и, исходя из этого, неверно сформулировал вопрос. тогда переформулирую: как один и тот же блок с TP использовать несколько раз так, чтобы работа одного экземпляра не оказывала влияния на другой ?

скрин получился поганый, ограничения на размер картинки. переделал.

kolyan
02.02.2012, 22:55
тогда переформулирую: как один и тот же блок с TP использовать несколько раз так, чтобы работа одного экземпляра не оказывала влияния на другой ?



Вот так и использовать, как Вы в скрине и показали.
У Вас создан функциональный блок ТР, но в основной программе Вы его вызываете под разными именами: VS3 и VS4.
Следовательно, это два различных экземпляра, которые не оказывают никакого влияния друг на друга.
Созданный Вами функциональный блок, фактически ничем не отличается от созданных программистами CoDeSys (или кем-то ещё) ФБ: TP, BLINK, RS, F_TRIG и.т.д.
И, когда Вы вызываете несколько одинаковых этих ФБ, но под разными именами, - у Вас ведь не возникает опасения, что эти ФБ будут как-то влиять друг на друга?

Главное помнить, что программа выполняется ПЛК не мгновенно.
А - слева направо, сверху вниз, к тому же циклично.
И, в первом Вашем примере,вначале ek1 был присвоен результат TRUE - при срабатывании TP1, но программа выполняется слишком быстро и Вы просто не успели этого заметить, потому что, когда выполнение программы дошло до строки в конце, где присваивается значение выхода TP2 ТОЙ ЖЕ переменной ek1, ей и было изменено значение из TRUE в FALSE, так как ТР2 не сработал и его выход имел значение FALSE.

RV9WFJ
03.02.2012, 08:45
Данная библиотека работает только на ПЛК63 и ПЛК73. Что в явном виде отображено в документах, описывающих работу с данной библиотекой.Зачем она тогда в комплекте поставки ПЛК110 :) Попробовал PID на ПЛК110, компилируется но не заливается, пишет неразрешенные ссылки на внешние POU. Возникает только вопрос: зачем вы эту библиотеку в поставку 110 включаете и в документации на библиотеку пишете:
Примечание. Значения Y_PLUS и Y_MINUS можно передавать на дискретный выход ПЛК, используя модуль PLC_Configuration PWM, для чего Y_PLUS приведен к значениям 0…65535, а Y_MINUS к значениям 65535…0 На ПЛК63/73 нет PWM.

anatolys
03.02.2012, 15:38
в целом Ваш код работает, если он конечно соответствует заданию

к сожалению, он не работает, не могу понять, почему. в аттаче - полный проект с этой проблемой. в нем есть вход ek1mo, и выход ek1. сначала я вызываю один экзмепляр блока vs в plc_prg, и потом вызываю еще несколько экземпляров vs из другого блока. при этом, ek1 в plc_prg не отрабатывает. перенесение его в другой блок результата не дает. вопрос, что я делаю не так.

anatolys
03.02.2012, 16:10
да, точно. код во вложении сообщением выше не работает, если один из выходов используется более одного раза. не могу понять.

anatolys
03.02.2012, 17:45
применительно к выложенному проекту.

цикл включения:
по входу start срабатывает выход ek1 и, если sens2 активен, срабатывает выход gen_kisl. через промежуток времени включаются выходы pump, gen_ozon и куча ek. ek - это электроклапана с трехпроводным управлением, один открытие, другой закрытие, третий - общий. функциональный блок vs используется для того, чтобы замкать выход на время, необходимое для полного открытия этого клапана. при этом, клапан ek1 можно открывать отдельной кнопкой ek1mo с ипользованием того же ФБ vs, внутри которого TP. так сделано просто чтобы меньше места занимало. семафоры там для удержания выходов gen_kisl, gen_ozon и pump в активном состоянии.

цикл выключения: по входу stop сначала срабатывает выход voc, который тоже такой же электроклапан, через промежуток времени срабатывают выходы, управляющие закрытием всей открытой ранее кучи клапанов - вся куча с буквой "c" на конце, сбрасываются поднятые ранее семафоры.

по большому счету, без семафоров можно обойтись, set/reset там тоже отлично работало. просто решил так.

пробовал заменить TP на TON/TOF, результат точно такой же, выходы висят в нулях.

anatolys
03.02.2012, 18:18
это уже попытка сбросить выход этого TP. не помогло, кстати... :) первоначально ее не было. если ее убрать, отрабатывает всё, кроме связки ek1mo-vs-ek1 в plc_prg. если убрать из блока on_off упоминание ek1, связка начинает работать.

anatolys
03.02.2012, 18:37
на отдых еще два дня впереди... :)
Вы попробовали убрасть R из vs, загрузить это в контроллер и посмотреть, что получится ? и оно заработало ? но КАК ? потому что то, что вижу я, выглядит так: вход отрабатывается, vs отрабатывается, а вот ek1 - нет. см. вложение.

skodafelicia
05.02.2012, 01:20
Библиотека oscat.de, функциональный блок ONTIME, наработка в секундах с программным включением и подсчетом количества этих включений, проблема 49 суток не влияет
К сведению, появилось обновление библиотеки OSCAT до версии 3.33

Спасибо за подсказку, библиотека такая стоит, брожу по ней, изучу данный блок поподробней...

Polina_kazan
06.02.2012, 09:14
Здравствуйте! Подскажите пожалуйста решение проблемы! Есть ПЛК100, к нему по RS-485 подключены модули МВА8 и МВУ8. В контроллере простинькая программа опроса входов и установки выходов. При пропадания питания на ПЛК, и последующего появления, контроллер перестает опрашивать модули ввода\вывода. Нажатия кнопки старт\стоп на контроллере ни к чему не приводят(((.

lara197a
06.02.2012, 09:23
Онлайн-подключение-создание загрузочного проекта-старт.

skodafelicia
06.02.2012, 23:19
http://www.owen.ru/forum/showpost.php?p=67095&postcount=225

b_gennady
16.02.2012, 11:22
Как обнулить таймер? Этот блок вызывается из программы несколько раз.

VAR
var1,var2:BOOL;
TON1:TON
END_VAR

var1:=1;
TON1(IN:=var1,PT:=T#20s,Q=>var2);
IF TON1.Q=1 THEN var1:=0

Переменная Q после первого прохода таймера остается в единице. Как перевести ее в 0.

Ruslan85
22.02.2012, 15:49
Всем Привет! подскажите пожалуйста как исследовать FB hysteresis и др. аналоговые преобразователи FB? заранее спасибо!

Ruslan85
22.02.2012, 16:15
Я совсем новичок в CoDesys пишу программу на языке LD для управления газовым нагревателям.Хочу пока отработать её без ПЛК. У нагревателя идёт регулирование температуры и давления на входе продукта и др. аналоговые сигналы. Затрудняюсь с программированием на языке LD аналоговых сигналов.

Ruslan85
22.02.2012, 16:37
да блок который будет эмулировать температуру

RV9WFJ
24.02.2012, 08:07
LD - ИМХО мазохизм и пережиток прошлого. Пиши на ST и будет счастье.

Ruslan85
24.02.2012, 14:09
ST конечно хорошо! наслышан, но у меня нет книг по изучению st, а в библиотеке кодесис описание его мне как новичку не хватает.

Ruslan85
24.02.2012, 14:32
очень интересные авторы И.Г. Минаев, Самойленко В.В. всё понятно всё доступно, но они описывают LD. Есть ли подобная литература где описан ST, SFC и CFC?

sv.vasilev
07.03.2012, 04:48
Здравствуйте, недавно получили ПЛК 150 I-M и модули МВ110-8А и МВ110-16Д для тестирования. Проблема возникла при подключении модулей. Индикации RS485 нет, делал все по инструкции подключения к ПЛК, при подключении выдает ошибку #2000:2000.1.6 19:14:17 # 1 PLC STARTED. Что это за ошибка в документации я не нашел, в чем может быть проблема?

И еще для чего нужны перемычки (переключатели) на лицевой стороне модуля? описания в предоставленной документации тоже нет.

Yegor
07.03.2012, 06:22
при подключении выдает ошибку #2000:2000.1.6 19:14:17 # 1 PLC STARTED. Что это за ошибка в документации я не нашел, в чем может быть проблема?А где там написано, что это ошибка? Просто сообщение.

Покажите свой пробный проект и снимок окна конфигуратора МВ с сетевыми настройками модуля.

swerder
07.03.2012, 09:58
удивительно, но в файлах РЭ_МВ110-16Д(ДН)_881.pdf и РЭ_МВ110-224 8А_984.pdf все довольно подробно расписано про перемычки. страницы 33 и 50 соответственно

Дмитрий Громов
07.03.2012, 12:12
Ламерский вопрос, но что-то аж разозлился от своего непонимания... Есть задача настройки пм01 и плк100, вообщем-то прошлый раз я реализовал почти всё что хотел при помощи примеров и так далее, но я делал это вслепую, я никак не могу нигде найти и нигде прочитать как мне работать с модемом прям из кодесис? читал "Прослушиваю связь между модемом и контроллером вижу строку ...." а как люди это делают? где писать посылаемые команды, где видеть принимаемые? я хочу во всём разобраться и написать свой работающий пример. В конечном счёте мне нужно, чтобы при звонке с мобильного на номер модема - он бросал трубку и на этот номер отвечал смс с текстом, а так же на него слал аварийные сообщения...

Gans
09.03.2012, 11:48
В конечном счёте мне нужно, чтобы при звонке с мобильного на номер модема - он бросал трубку и на этот номер отвечал смс с текстом, а так же на него слал аварийные сообщения...
При входящем звонке модем в порт ПЛКххх выдает комбинацию символов "RING". Так вот как только это увидите на входе в порт делайте то что Вам нужно :-)

kol9n
10.03.2012, 22:10
Здравствуйте)) программировал на С, там можно обращаться к переменой через ее адрес (с помощью указателей), сохранять адрес, также к адресу можно было прибавлять целые числа.

мне в программе надо управлять несколькими двигателями, можно ли обращаться к модулю в конфигураторе непосредственно через адрес?, так же прибавив к этому адресу число и обращаешься к следующему модулю.

lara197a
10.03.2012, 22:44
В ПЛК все проще и ближе к людям. Можно и по адресам, но удобнее символьная адресация. Компилятор всё сделает за Вас.

Yegor
11.03.2012, 16:21
так же прибавив к этому адресу число и обращаешься к следующему модулюОпасно. Память выделяете не вы и это не массив, а потому нельзя полагаться на то, что структуры лежат стык-в-стык.

Я сам плюсишник, но в ST решил особо не фокусничать. В основном проекте у меня через указатели только несколько экземпляров однотипных функциональных блоков адресуются.

SCF
11.03.2012, 22:48
Друзья, помогите разобраться с task configuration. В PLC_PRG вызываю прочие pou, например valves(); sensors();
Pou много, вызываются один за другим, все работает как надо. Переношу их в task configuration, в той же последовательности вызываю. Программа начинает работать некорректно, как будто pou не выполняются. В task configuration стоит циклический вызов 50 мс. Используя freewheeling ничего не меняется. Вообще объясните тупому в каких ситуациях рекомендуется использовать cycle а когда freewheeling? Как вообще грамотно работать с task configuration? Буду очень всем откликнувшимся благодарен.

Николаев Андрей
12.03.2012, 14:58
cycle - вызывается с заданной частотой.
freewheeling - вызывается когда у ПЛК есть свободное время. Если времени нет - не вызывается :)
При подключении в TaskConfiguration PLC_PRG перестает быть программой по умолчанию.

Работа с данным инструментом очень хорошо описана в мануале по CoDeSys и в справке.

Yegor
13.03.2012, 08:34
Warning 2501: A callback function is not allowed to contain local variables.Вай из ит соу?

Дмитрий Громов
14.03.2012, 08:40
При входящем звонке модем в порт ПЛКххх выдает комбинацию символов "RING". Так вот как только это увидите на входе в порт делайте то что Вам нужно :-)

Клаасно что он выдаёт комбинацию символов, но где посмотреть её в какую переменную забивать АТ команды?

sv.vasilev
14.03.2012, 09:36
А где там написано, что это ошибка? Просто сообщение.

Покажите свой пробный проект и снимок окна конфигуратора МВ с сетевыми настройками модуля.

скрин:5706
проект: 5707

И что означает сообщение "1PLC STARTED"
Где можно смотерть расшифровку системных сообщений и ошибок?

Yegor
14.03.2012, 09:51
что означает сообщение "1PLC STARTED"Включение ПЛК (но не запуск программы).

Ошибок в конфигурации у вас я не нашёл.

sv.vasilev
14.03.2012, 13:02
Включение ПЛК (но не запуск программы).

Ошибок в конфигурации у вас я не нашёл.

Какой должен быть Register address применительно для модуля МВ110-224.8А, на 1-ом канале?

vooodooo22
15.03.2012, 13:05
Доброго всем суток времени.
Вот хотел поинтересоваться в правильном ли я направлении двигаюсь. дабы изучать ПЛК стал только пару недель назад. В электротехнике не шарю, скажу сразу =) но общее представление имею. Изучил основу CoDeSys (но блоки пока не все разобрал, только основные)

На новой работе дали задание изучить область Программируемых логических контроллеров для внедрения в Автоматическую линию контактной сварки. ПЛК будет выполнять роль РКС (регулятор контактной сварки).
Приглянулся нам ОВЕН ПЛК160
Программировать будем в CoDeSys v2.3.
Использую пока FBD, дабы более наглядный язык для новичка незнающего электротехнику
Таргет-файл использую 3S CoDeSes SP RTE с "виртуальным устройством ПЛК"(если можно так сказать, другими словами незнаю как назвать) OEMs:CoDeSys SP RTE Realtime Runtime System For Windows NT/2000/XP, т.к. для Таргет-файла PLC160 "виртуального ПЛК-симулятора" не нашел.

Итог:
•ПЛК (симулятор) - OEM:CoDeSys SP RTE Realtime Runtime System For Windows NT/2000/XP
•Среда - CoDeSys v2.3.
•Язык - FBD
•Таргет-файл - 3S CoDeSes SP RTE

Набросал такую вот программку для подачи сигнала с одного входа "VarBOOL1" на 4 выхода "VarQ1,VarQ2,VarQ3,VarQ4" поочередно ("беглый огонь"), т.е. после подачи сигнала (TRUE) на вход на каждый выход подается секундный импульс поочередно (сначала загарается/гаснет VarQ1 на 1 сек, потом VarQ2 на 1 сек и т.д.) и все это заключено в бесконечный цикл (VarQ4 := VarBOOL1). Цикл тут для наглядности примера, в реале удалю. Все работает как часы.

http://www.cyberforum.ru/attachment.php?attachmentid=134194&amp;d=1331726318

http://www.cyberforum.ru/attachment.php?attachmentid=134194&d=1331726318

2 вопроса:
•Будет ли это работать именно так как задумано (с одного входа на 4 выхода) при подключении ОВЕН ПЛК 160, конечно используя таргет-файл PLC160?
•Существуют ли "виртуальные ПЛК-симуляторы" различных моделей (например ПЛК 160) или они существенно ни чем не отличаются от предложенного 3S CoDeSes SP RTE поэтому и не были созданы?

swerder
15.03.2012, 14:44
если вам "симулятор" нужен только для отладки программы, то ставьте таргет для плк, а в кодесисе "онлайн-режим эмуляции"

Yegor
15.03.2012, 16:59
Будет ли это работать именно так как задумано (с одного входа на 4 выхода) при подключении ОВЕН ПЛК 160, конечно используя таргет-файл PLC160?Скорее всего будет, но я бы не смог спокойно спать, увидев подобный код на объекте, т.к. вы полагаетесь на то, что таймеры работают идеально точно и остаются синхронизированными друг с другом. На всякий случай я бы сделал по крайней мере так: http://images.devs-on.net/Image/pzmyCJ6KurTqIZQg-CoDeSysUntitled.png

И на ST, как правило, лаконичнее получается:
i := TIME_TO_DWORD(TIME()) / 1000 MOD 4;
L1 := i = 0;
L2 := i = 1;
L3 := i = 2;
L4 := i = 3;Так что рекомендую учить именно его.

oops Забыл про разрешающий вход.

Валенок
15.03.2012, 19:02
А так нагляднее
Попробуйте только L3 задержать на 3с :)

vooodooo22
16.03.2012, 09:48
<pre class="alt2" style="margin:0px; padding:6px; border:1px inset; width:640px; height:98px; overflow:auto"><div dir="ltr" style="text-align:left;">i := TIME_TO_DWORD(TIME()) / 1000 MOD 4;
L1 := i = 0;
L2 := i = 1;
L3 := i = 2;
L4 := i = 3;</div></pre>

Подскажите пожалуйста, как работает TIME_TO_DWORD(TIME())?
Какую переменную получает DIV от TIME_TO_DWORD(TIME()) в варианте с FBD?

Справочник CoDeSys дает не полное описание "TIME_TO/TIME_OF_DAY преобразования" :(

Yegor
16.03.2012, 12:43
хватит примерно на 49 сутокВ данном примере хватит на сколько угодно, т.к. переполнение идёт через кратную четырём величину.

vooodooo22
16.03.2012, 13:44
конкретно TIME_TO_DWORD переводит значение времени в миллисекунды в диапазоне типа данных DWORD, что хватит примерно на 49 суток

А по поводу 2-го вопроса:
•Какую переменную получает DIV от TIME_TO_DWORD(TIME()) в варианте с FBD конкретно в данном случае? Чтобы до конца понять.

В этом примере:
i := TIME_TO_DWORD(TIME()) / 1000 MOD 4;
(*1000 должна же делиться на конкретную переменную*)

Простите конешно если задаю глупые воросы, но спросить не у кого :confused:

Валенок
16.03.2012, 16:46
У него в новой теме (http://www.owen.ru/forum/showthread.php?t=12293) все условия для лампочек поменялись.
И там тоже можно на ST в четыре строки уложить :). Но на фига козе баян после каждого изменения хотелок.
см. пост #616

vooodooo22
16.03.2012, 18:39
У него в новой теме (http://www.owen.ru/forum/showthread.php?t=12293) все условия для лампочек поменялись.
И там тоже можно на ST в четыре строки уложить :). Но на фига козе баян после каждого изменения хотелок.
см. пост #616

Все с чего-то начинали :)

вапросик
19.03.2012, 13:41
день добрый,форумяне!
скачал из раздела "Библиотеки для контроллеров ОВЕН ПЛК110/160 (Навигатор ПЛК110/160 версия 6)"
библиотеку ModBus.lib - но в описании на эту библиотеку написано:
Библиотека предназначена для работы (чтение/запись) с параметрами устройств через последовательный интерфейс ПЛК 63 стандартного протокола Mobdus.
Возможно так же применение данной библиотеки для других приборов на основе CoDeSys.
так пригодна эта библиотека именно на ПЛК-110/160?

Gans
19.03.2012, 13:47
Здравствуйте Вопросик

в описании на эту библиотеку написано:
Библиотека предназначена для работы (чтение/запись) с параметрами устройств через последовательный интерфейс ПЛК 63 стандартного протокола Mobdus.
Возможно так же применение данной библиотеки для других приборов на основе CoDeSys.
так пригодна эта библиотека именно на ПЛК-110/160?
Да работает. + и на ПЛК100/15х

BEN
20.03.2012, 12:24
как запрограммировать на языке st кнопку пуска с самофиксацией file:///F:/%D0%A1%D0%A5%D0%95%D0%9C%D0%90%20%D0%9B%D0%94.jpg

Валенок
20.03.2012, 13:44
Пуск:=Пуск OR Нажато

Yegor
20.03.2012, 13:44
Что за кнопка пуска такая, которая ST поддерживает? :) А если серьёзно, скажите хоть, что там на входе. И картинку вашу тут не увидят, т.к. её надо было прикреплять к сообщению, а не вставлять локальный путь к ней прямо в текст.
Пуск:=Пуск OR НажатоА отключать как?

BEN
20.03.2012, 14:22
file:///F:/%D0%A1%D0%A5%D0%95%D0%9C%D0%90%20%D0%9B%D0%94.jpg

BEN
20.03.2012, 14:23
КАК КАРТИНКУ ЭТУ ПИКРЕПЛЯТЬ

BEN
20.03.2012, 14:33
5762 ЕСЛИ МОЖНО ТО ПЕРЕЧИСЛИТЕ ПОЖАЛУЙСТА СПИСОК ЛИТЕРАТУРЫ ПО ПРОРАММИРОВАНИЮ НА ST