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

drvlas
06.12.2012, 15:08
А перезагрузить Windows не забыли?Я даже выключаю питание, как нормальный чайник :)

petera
06.12.2012, 15:23
Я даже выключаю питание, как нормальный чайник :)
Жаль что не помогло, хотел искренне помочь. У меня все комментарии копируется из кодесиса, например в Блокнот, нормально:confused:
Значит "Дело было не в бобине...":D

drvlas
06.12.2012, 15:31
Да, Бог с ним. Научил меня через транслятор Лебедева - и то хорошо. Остальное не печет. Я же понимаю, что КДС2.3 уже не интересен даже его создателям. Куда уж говорить о вечно занятых сотрудниках ОВЕНа.
Моя единственная надежда - что ПЛК100 продолжат выпускать, ибо он оптимален для моих задач, что КДС2.3 будет поддерживаться хоть номинально. А мелкие неудобства - простим немецким комарадам.

petera
06.12.2012, 16:14
Так и сделал.
Но, не поверите, ничего по копипейсту не изменилось :(
К стати я писал
в ветке "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes" для системных шрифтов явное указание кодовой страницы 204. Т.е
"Arial,0"="Arial,204"
"MS Sans Serif,0"="MS Sans Serif,204" и т.д
Я не использую разных схем украшения Windows (в системе нет лишних шрифтов, а именно удаляю безжалостно все где нет кириллицы и все с украшательствами, типа Gotica и т.д) и у меня прописаны только стандартные шрифты Windows
MS Sans Serif
Arial
Tahoma
Verdana
Times New Roman
Courier New
если у Вас в системе используется не описанные в этой ветке реестра шрифты, то и эффект будет 0.
Было как-то пытался распечатать текст программы в среде U90Ladder от Unitronics, пока не прописал соответствие шрифта (какой шрифт был не помню, название его долго вычисляли по начертаниям символов) с кодировкой иврит на кодировку 204 были крякозябры.
Так, что нужно покопаться в шрифтах установленных в системе.

drvlas
06.12.2012, 18:41
если у Вас в системе используется не описанные в этой ветке реестра шрифты, то и эффект будет ...
Так, что нужно покопаться в шрифтах установленных в системе.Ага! Понял. Ну, тогда я смотрю в мой реестр (в regedit у меня хватает квалификации войти), выбираю там, например, Tahoma. Вижу, что есть магическая запись

7576

Выбираю в КДС эту же тахому, вижу, как изменились начертания (у меня-то была Dejavu Sans Mono, ибо признаю в программировании тольок monospace шрифты). Делаю копипаст - дудки! Те же козяблики.

Так что не там я копаюсь, скорее всего.

petera
06.12.2012, 22:53
Ага! Понял. Ну, тогда я смотрю в мой реестр (в regedit у меня хватает квалификации войти), выбираю там, например, Tahoma. Вижу, что есть магическая запись

7576

Выбираю в КДС эту же тахому, вижу, как изменились начертания (у меня-то была Dejavu Sans Mono, ибо признаю в программировании тольок monospace шрифты). Делаю копипаст - дудки! Те же козяблики.

Так что не там я копаюсь, скорее всего.
Сложно что-то еще посоветовать дистанционно, к тому же я не работал с Win7 достаточного времени для глубокого понимания тонкостей ее устройства. Я привык к ХР так, как для меня работа в Windows комфортная тогда, когда я имею доступ ко всем настройкам системы. Когда пытаюсь найти привычнее мне настройки в Win7 (например сетевое окружение или свойства сетевых подключений), то мозг опухает с непривычки.:)
Может обсуждаемая проблема где-то в региональных настройках, может еще где-то.
Надо погуглить про проблему копипаста в Win7 в глобальном смысле, а не только относительно кодесиса.

petera
06.12.2012, 23:20
По копипасту нашел с первого раза
Вопрос

Всем привет!!!
Есть у кого нибудь соображения, и предложения по вот такой вот ситуации:
Есть программка самописная - Garcon (Общепит, бар...) пока пользовался ХР всё прекрасно было, как поставили на семёрку появилась проблемка, суть в следующем:
Копирую из программки Наименование (Ctrl/C) и вставляю в Word, Excel, блокнот (Crtl/V)
вставляются кракозябы.
Ответ

Проблемы копирования кириллицы между юникодовой и не-юникодовой программами
(например не-Unicode текстовый редактор <----> браузер или MS Word; и вроде Ваша Garson тоже не-Unicode программа) под НЕрусской Windows (решения - разные в зависимости от направляния копирования) описаны в

главе 2 "Copy/Paste; файлы .TXT" раздела

"Unicode и кириллица: проблемы и решения" сайта про кириллицу под НЕрусской Windows http://WinRus.com

А конкретно описанная проблема имеет простое решение (в обратном направлении - из юникодовой программы в не-юникодовую, решения намного сложнее):

надо перед копированием переключить клавиатуру на "RU" (чтобы системный буфер 'знал', что копируется кириллица, а не западно-европейский текст) -
и только потом делать Ctrl/C.
ключевой момент здесь надо перед копированием переключить клавиатуру на "RU" (чтобы системный буфер 'знал', что копируется кириллица, а не западно-европейский текст) - и только потом делать Ctrl/C
Но лично попробовать не могу.

drvlas
06.12.2012, 23:29
Но лично попробовать не могу.А я могу! Во, какой я мощный :)

РАБОТАЕТ! Удивительно, что все мои предыдущие пробы выполнялись при включенной аглицкой раскладке! Причем. вероятность 1/3, ибо у меня на самом деле 3 раскладки (Укр, Рус, Анг). И при любой из первых двух копипастит кириллицу аж дым идет!

Ну, сябре, вялікае дзякуй!
Ты, я смотрю, заводной парень :) Не успокоился, пока не догрыз до полного решения. Даже не имея чем проверить...

petera
06.12.2012, 23:38
А я могу! Во, какой я мощный :)

РАБОТАЕТ! Удивительно, что все мои предыдущие пробы выполнялись при включенной аглицкой раскладке! Причем. вероятность 1/3, ибо у меня на самом деле 3 раскладки (Укр, Рус, Анг). И при любой из первых двух копипастит кириллицу аж дым идет!

Ну, сябре, вялікае дзякуй!
Ты, я смотрю, заводной парень :) Не успокоился, пока не догрыз до полного решения. Даже не имея чем проверить...
Ну и слава богу, что совместными усилиями разобрались.:)
К стати, на этом сайте http://winrus.com/index_ru.htm много интересного.
Я уже было приготовил еще один способ, он яко бы спасает если первый не прокатит.

Способ 2
для копирования не-Unicode --> Unicode

Универсальное решение для такого случая - при копировании кириллицы из неюникодовой программы (Netscape 4.79, Dreamweaver, текстовый редактор, ...) в юникодовую (Internet Explorer, Outlook, ...) заключается в следующем:

Надо в качестве 'промежуточного пункта', использовать окно программы, которая, во-первых, понимает Unicode, и, во-вторых, позволяет указать кодировку, то есть, указать, что идёт копирование именно кириллического текста.

Текстовый редактор UniPad как 'промежуточный пункт' при Copy/Paste

UniPad (специальный редактор для Unicode) может помочь при копировании из неюникодовой программы (например, текстовый редактор или Dreamweaver) в юникодовую (например, Internet Explorer или Word 97/2000):
Сгрузить и установить "UniPad" http://www.unipad.org/
Вызвать UniPad и открыть новый документ - File/New
Теперь можно использовать это окно, как 'промежуточный пункт' при копировании:

Выделить и скопировать текст в неюникодовой программе
Вставить текст в это окно UniPad специальным образом:
Edit / Paste As
(вставить с указанием кодировки')
В списке кодировок найдите нужное - "Windows CP-1251 (Cyrillic)" и щёлкните на "Ok".

Произойдёт перекодировка из неюникодового текста в юникодовый -
по схеме "Cyrillic (Windows-1251)" ---> Unicode, которую мы явно указали (а иначе бы система считала, что исходный текст - в кодировке "Western")

В окне UniPad теперь - нормальная кириллица (в виде Unicode) и теперь можно отсюда скопировать в любую Unicode-программу, например, в Word 2000

drvlas
06.12.2012, 23:47
К стати, на этом сайте http://winrus.com/index_ru.htm много интересного.Отличный сайт! Уже внес его в закладки и буду популяризировать с удовольствием.

Слушай, уважаемый, а может ты знаешь и как переносить куски SFC-программ? Или хотя бы отдельные шаги и действия? ЩАС вот сижу, переделываю кой-чего, ну, зла не хватает все копипастить по-частям (отдельно название шага, потом его атрибуты, его условие, его действия... Убиться с тумбочки!)
Этот вопрос тоже здесь задавал, но как-то безрезультатно. Но "тут подошел Киндзюлис и сказал"...

petera
06.12.2012, 23:51
Не знаю, не сталкивался пока с этим....
Я ведь не волшебник, а только учусь....:)

petera
07.12.2012, 01:55
Слушай, уважаемый, а может ты знаешь и как переносить куски SFC-программ? Или хотя бы отдельные шаги и действия? ЩАС вот сижу, переделываю кой-чего, ну, зла не хватает все копипастить по-частям (отдельно название шага, потом его атрибуты, его условие, его действия... Убиться с тумбочки!)
Этот вопрос тоже здесь задавал, но как-то безрезультатно. Но "тут подошел Киндзюлис и сказал"...
Так как Вы меня похвалили за мою настойчивость решил в качестве бонуса попробовать копировать и вставлять в SFC-программе.:)
Значит так. Вроде все копируется и вставляется в стандартном режиме и через меню копировать-вставить и с помощью соответствующих значков на панели управления и с помощью сочетания клавиш.
Но есть нюансы.
Сначала копируем. Копировать можно один шаг (он скопируется вместе с действием), один шаг (он скопируется вместе с действием) в месте с условием перехода за ним, группу последовательно идущих шагов с или без условия перехода для последнего шага.
Как копировать.
Один шаг вместе с его действием - 1 Просто щелкаем на нем левой кнопкой. 2 Вокруг появляется рамка из точек. 3 Меню Правка->Копировать (Или Ctrl+C).
Один шаг вместе с условием перехода за ним - 1. При нажатой SHIFT или Ctrl щелкаем левой кнопкой на шаге, а затем на условии перехода за ним. 2 Вокруг них появляется рамка из точек. 3 Меню Правка->Копировать (Или Ctrl+C).
Группу последовательно идущих шагов - 1. При нажатой SHIFT или Ctrl щелкаем левой кнопкой на первом шаге, а затем на последнем и при необходимости на условии перехода после последнего в группе шага. 2 Вокруг них появляется рамка из точек. 3 Меню Правка->Копировать (Или Ctrl+C).
Вставляем скопированное в другое место. Эффект вставки зависит от того, что скопировано. Результат вставки будет помещен или сверху существующего шага или слева от него в виде альтернативой ветви.
Как вставить
1 Щелкаем в программе на шаге где нужно вставить. 2 Вокруг шага появляется рамка из точек. 3 Меню Правка->Вставить (Или Ctrl+V).
Если был скопирован один шаг, то он займет место выделенного шага, который сместится вправо в виде альтернативой ветви.
Если был скопирован шаг вместе с условием перехода идущим за ним, то он вместе с условием перехода займет место сверху выделенного.
Аналогично и со вставкой группы шагов. Они будут вставлены либо выше, либо на месте выделенного шага (здесь вся группа вставляемых шагов займет место выделенного шага, который сместится вправо в виде альтернативой ветви для всей группы). Зависит от того, было выбрано условие перехода для последнего шага при копировании группы или нет.
:cool:

drvlas
07.12.2012, 02:10
Ну и ну...


Но есть нюансы.Отож! Но, как оказалось, меня от решения отделял всего один шаг!


Как копировать.
...
3 Меню Правка->Копировать (Или Ctrl+C).А я, балда, все пытался по правой кнопке мышки найти в контекстном меню "Копировать"... А нету-ти там такого! И не подумал заменить это обычным CTRL-C.

Кста, очень интересно то, что КДС вставляет буфер по-разному. То есть, когда видишь это, то вроде "а как же иначе?", а на самом деле здОрово придумано!

В общем, не устану хвалить вдумчивость и настойчивость, а также желание помочь, присущие уважаемому коллеге petera. Давно я уже не видел подобного отношения к вопросам. Хотя горжусь, что в моих учителях были известные таланты Валенок, Gans, capzap и другие, не буду вдаваться в перечисление.

Спасибо, дорогой коллега!

petera
07.12.2012, 02:36
В общем, не устану хвалить вдумчивость и настойчивость, а также желание помочь, присущие уважаемому коллеге petera. Давно я уже не видел подобного отношения к вопросам. Хотя горжусь, что в моих учителях были известные таланты Валенок, Gans, capzap и другие, не буду вдаваться в перечисление.

Спасибо, дорогой коллега!
И Вам спасибо, коллега, за столь лестную оценку моих стараний. Я как начинающий пользователь продукции ОВЕНа и Кодесиса понимаю,что в учителя мне еще рано. Но поиск ответов на вопросы других участников форума, может даже таких же как и я начинающих, способствует росту моего собственного мастерства. На чужих вопросах тоже можно учиться!

_Pavel_
07.12.2012, 16:15
Всем привет! Я новичок. Нужна помощь!
1. В какой-то момент времени в среде CoDeSys V2.3.9.36 перестала работать встроенная справка. При попытке вызвать окно справки "содержание" или "поиск" программа вылетает с ошибкой, вот сведения:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: Codesys.exe
Версия приложения: 2.3.9.36
Отметка времени приложения: 5007c4b1
Имя модуля с ошибкой: itss.dll
Версия модуля с ошибкой: 6.1.7600.16385
Отметка времени модуля с ошибкой: 4a5bda04
Код исключения: c0000005
Смещение исключения: 00018f12
Версия ОС: 6.1.7601.2.1.0.256.48
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

2. Перестали отображаться значения переменных в режиме "онлайн". Я видимо что-то отключил, но не могу найти где... Причём в менеджере просмотра переменные отображаются нормально, а в самом коде вместо значений - знаки вопроса "???". Подскажите, где копать?

Александр Ушаков
08.12.2012, 07:31
Здравствуйте!
Такая ситуация, хотел распечатать конфигурацию ПЛК но так и не смог, получается ни пойми что (верхушки строк). Пробовал печатать и в ПДФ файл тоже самое.
Может кто поделится своим опытом .
Спасибо.

S.A.D.
09.12.2012, 18:08
можно ли к codesys прикрутить протокол МЭК104? Может какая библиотека есть специализированная.

S.A.D.
12.12.2012, 15:45
помогите плиз. неужели никто не заморачивался поднятем на ОВЕН ПЛК протокола МЭК60870-104

capzap
12.12.2012, 20:44
можно ли к codesys прикрутить протокол МЭК104? Может какая библиотека есть специализированная.

Это шутка что ли такая? Есть гост http://vsegost.com/Catalog/58/5809.shtml
вот и напишите сами реализацию протокола, если есть такая задача. Мне кажется ни у кого нет столько свободного времени, чтоб заняться этим из-за желания помочь Вам

S.A.D.
12.12.2012, 20:57
это не шутка, и я не просил за меня писать. Просто думал может есть какая сторонняя не стандартная библиотека под это дело. Гуглом не нашел таковой, вот и обратился с вопросом.

IVM
13.12.2012, 10:25
это не шутка, и я не просил за меня писать. Просто думал может есть какая сторонняя не стандартная библиотека под это дело. Гуглом не нашел таковой, вот и обратился с вопросом.
Спасение утопающих дело рук самих утопающих. Реализация таких протоколов есть сложная и кропотливая работа, и стоит больших денег.

vooodooo22
13.12.2012, 13:09
Всем привет! Я новичок. Нужна помощь!
1. В какой-то момент времени в среде ...

2. Перестали отображаться значения переменных в режиме "онлайн". ...

1. Жахните программу и поставьте заново.

2. Это особенность среды разработки. Нужно открыть повторно требуемый POU в режиме онлайн. На сколько я помню.

Удачи:)

Александр Ушаков
14.12.2012, 06:20
Здравствуйте!
Такая ситуация, хотел распечатать конфигурацию ПЛК но так и не смог, получается ни пойми что (верхушки строк). Пробовал печатать и в ПДФ файл тоже самое.
Может кто поделится своим опытом .
Спасибо.

Здравствуйте!
Не ужели ни у кто не пытался решать подобную проблему или это просто плата за
без платность CoDeSys просветите.
Спасибо.

vooodooo22
14.12.2012, 12:57
Здравствуйте!
Не ужели ни у кто не пытался решать подобную проблему или это просто плата за
без платность CoDeSys просветите.
Спасибо.

Можно поподробнее, пошагово? После каких действий возникает проблема? Не доводилось этим заниматься, но интересно))

Александр Ушаков
15.12.2012, 07:36
Здравствуйте!
Делаю всё как в любом приложении Windows, открываю проект, открываю
конфигурацию ПЛК, раскрываю параметры, файл, печать.
В настройках печати практически ничего нет.
Спасибо.

vooodooo22
17.12.2012, 11:03
Попробуйте поискать здесь http://www.users-conference.com/index.shtml?ru_ru_oem1

Ну а вообще думаю люди принтскрином пользуются))))) покрайне мере пока еще не возникало такой жуткой необходимости в распечатке конфигураций ПЛК :)

Andrei Z
17.12.2012, 16:30
Вот мои первые попытки сделать что то в Кудесис, на базе бесплатного обучения по книге и видео от Кирилла.:p Хотел открыть новую тему чтобы такие как я могли обсуждать такие вещи без смешков что мы чайники)))))) Но подумал активности не очень будет

Впринципе при покупе ПЛК 73, уже реально на одной из моих котельных установить регулирование котлом по погодозависмому графику. Возможно даже сделать каскад по подключению второго котла, Но пока и это радует.
Видно будет сразу температуру на улице и температуру прямой воды)))
:p радуюсь как ребёнок :D

Oleganx
17.12.2012, 18:53
Помогите новичку, за неимением живого плк юзаю:
1.один комп c codesys+plc winnt в качестве контроллера.
2.второй комп с Masterscada и Master opc universal.
Вопрос-возможно ли организовать связь орс и winnt по ethernet.

capzap
17.12.2012, 19:21
Помогите новичку, за неимением живого плк юзаю:
1.один комп c codesys+plc winnt в качестве контроллера.
2.второй комп с Masterscada и Master opc universal.
Вопрос-возможно ли организовать связь орс и winnt по ethernet.

У Вас задание одинаковое или Вы из одной группы, в этом месяце уже был такой вопрос. Да можно

Oleganx
17.12.2012, 19:43
У Вас задание одинаковое или Вы из одной группы, в этом месяце уже был такой вопрос. Да можно

Задание придумал себе сам)) изучаю плк в свободное время от работы.Проблема думаю заключается в настройках орс а именно в адресе устройства, в даном случае winnt, и адресе добавленного тега в орс, если не прав, исправте пожалуйста.

Andrei Z
17.12.2012, 19:59
capzap:confused: а мою первую програму не посмотрели? это вообще мои первые попытки в Кулесис((
Добавил визуализацию с ползунками, чтобы легче было проверять.
При пуске включается первая ступень, а вторая управляется в зависимости от графикавклю-выключение происходит +- один градус

capzap
17.12.2012, 21:10
capzap:confused: а мою первую програму не посмотрели? это вообще мои первые попытки в Кулесис((
Добавил визуализацию с ползунками, чтобы легче было проверять.
При пуске включается первая ступень, а вторая управляется в зависимости от графикавклю-выключение происходит +- один градус

Почему же не посмотрел, видел, всё как положено 1486 пост, 11.2 кБ, Ваша программа во вложении.

capzap
17.12.2012, 21:13
Задание придумал себе сам)) изучаю плк в свободное время от работы.Проблема думаю заключается в настройках орс а именно в адресе устройства, в даном случае winnt, и адресе добавленного тега в орс, если не прав, исправте пожалуйста.

Лучше напишите каким способом Вы "подняли" модбас под эмулятор плк, через конфигурацию или на сокетах через библиотеки, для того чтоб ОРС было у кого спрашивать данные

Andrei Z
17.12.2012, 22:22
Сделал в Кудесисе визуализацию чтобы при нагреве пламя увеличиволась, а рисунки то берёт с компа прога, выставить не получится :(

Получилось, надо было галочку поставить не из файла брать а в прогу вставлять. Обновил свою програмку))))
Ещё вычитал в Спарвке , что визуализация в кудесисе может быть использована и в дальнейшем черех web А на уроках говорили что для своего опробирования.

Oleganx
18.12.2012, 16:23
Лучше напишите каким способом Вы "подняли" модбас под эмулятор плк, через конфигурацию или на сокетах через библиотеки, для того чтоб ОРС было у кого спрашивать данные

Модбас поднят не был (пока не знаю как),решил что после снятия флага в дополнительных настройках орс "Modbus поверх тср", связь будет как при работе с орс от кодесис, спасибо за ответ.

Andrei Z
18.12.2012, 23:04
А кто как использует расходомер? Просматриваю библиотеки и пробую их вставлять в прогу. Наткнулся на UTIL.lib в папке сигнал вот такой функциональный блок FREQ_MEASURE.
Считает Герцы от поступающего сигнала дискретного входа. Если на выход добавим блок умножения на 3.6 можно увидеть расход в м3/ч, если принять вес импульса 1л/импульс (вход)
Всё вроде бы хорошо, но если перестать подавать сигнал, расход застыл. Поставил на сброс блок ТON c входом инверсным чтобы например при отсутствии сигнала 10 секунд расход скидывается на ноль.
В теплосчётчике такого нету, потому как насос остановился и идёт по показанием как бы затухание расхода, потому как время от последнего сигнала увеличевается. Здесь же будет замирание показаний на последнем импульсе расхода, А время сброса может быть через 5 минут.

_Pavel_
21.12.2012, 16:18
Подскажите, пожалуйста, имеется многозадачный проект, какой командой ST в CoDeSys 2.3 можно завершить текущую задачу, вызванную событием, досрочно?

drvlas
21.12.2012, 16:34
А кто как использует расходомер?Улыбнуло. Сижу, пишу руководство по эксплуатации дозатора и именно сейчас, представь, описываю реализацию выдачи сигнала, пропорционального текущему расходу (я выдаю его по ШИМ-выходу ПЛК и преобразую в ток 4-20 мА). Каково совпадение?

Ну что я могу сказать? Создай более сложную математику, всего делов-то! Если данные о прошедшем продукте (у тебя - количество импульсов) в ПЛК есть, если время можно измерить - так построй гиперболическую формулу. И будет счастье!
Здесь нужно только для себя решить, от какого времени ты считаешь расход. Если от самого пуска (это кагбэ проще), то тупо делишь число импульсов на время от пуска. Остановились импульсы - начал падать расход. Через, скажем, удвоенное время (допустим, 13 минут работали, а потом остановились и прошло еще 13 минут) реальный расход должен быть ровно в 2 раза меньше того, который имел место в момент прихода последнего импульса. Понимаешь?
Ну, а если считать расход по каким-то более коротким временнЫм интервалам - тогда чуть посложнее логика. Но это уж твое авторское право, как там накрутишь. У меня, например, прибор широкого употребления, я предусмотрел 2 варианта на выбор пользователя. В одном режиме расход считается от пуска, в другом - "без памяти предыстории" - от последнего импульса (у меня там не импульсы. а выгруженные дозы продукта, но какая разница...).

Andrei Z
21.12.2012, 17:07
Ну я просто изучаю, потому как расходомер на котельных это большая часть. На данном этапе у меня стоит расход на подпитке, насос с ПЧВ и со спящим режимом. Расходомер с герконом 1 л/импульс. Вторичный прибор теплосчётчик ВКТ 5, незнаю как там заложен алгоритм, но мне не очень удобно, хотя лучше не добьёшься.
Если насос остановился, и оператор подойдёт глянет а там покажет расход например 100 литров, конечно какая подпитка если насос стоит, когда работает проблем нет, литры скачут один раз в 3 секунды. Потом как я понял идёт затухание, тоесть ВКТ считает время от последнего импульса и показания расхода понемножку меньше меньше...... если насос долго стоит то со временем упадёт до 0. Видать всё время учитывают время между последним импульсом.
Почему спрашиваю, потому что на самом деле задача до давно нужная для ПЛК, можно вообще и без библиотеки смаому все сделать с простых блоков математики. А вдруг есть вообще простой блочок в библиотеке))))) а я голову ломать буду)))
Веки живи век учись

Колыбельников
23.12.2012, 10:28
Можно считать программу с ПР

rovki
23.12.2012, 10:47
Можно считать программу с ПР

Нельзя :( ,ни как не получится ,да и зачем ,если она делается в течении часа с нуля.Только тема -области применения ПР;)

S.A.D.
08.01.2013, 17:07
прошу прощения за очередной тупой вопрос, но ответа на форуме найти не смог. Нужно отправить ответ на запрос модбас мастера. Длина данных в ответе 120 байт. Уперся в то, что не могу понять как преобразовать различные типы данных переменных в HEX'ы(и наоборот) для последующей упаковки их в массив ответа.

S.A.D.
08.01.2013, 18:29
Уверены, что Вам именно 16-ричная система нужна? Может просто байты местами менять требуется?

что-то у меня крыша уже едет. Я перемешал яблоки с картошкой. Нужно же ведь всего лишь перевести из десятичной в шестнадцатиричную)))) А я мозг парю как перевести из float в шестнадцатиричную систему))))) Ну анекдот)) извините за беспокойство

Как стандартными средствами перевести число из одной СС в другую? Неужели нет никакой функции соответствующей? Вручную писать переводы из одной СС в другую вообще не серьезно(((((

petera
08.01.2013, 21:02
не совсем уверен. Это все у меня касательно текущей задачи по подгонке ПЛК под Модбас устройство-мастер. Я от него слушаю входящий запрос (запрос ведь в hex), должен вычленить необходимые байты которые указывают на то, что он хочет, и дать ему данные которые он запросил упаковав их опять же в modbus rtu посылку, которая опять же в hex'ах. Или я что-то неправильно понимаю?

добавлено: что-то у меня крыша уже едет. Я перемешал яблоки с картошкой. Нужно же ведь всего лишь перевести из десятичной в шестнадцатиричную)))) А я мозг парю как перевести из float в шестнадцатиричную систему))))) Ну анекдот)) извините за беспокойство

Можно ли стандартными средствами перевести число из одной СС в другую?
1. Что значит "подгонка ПЛК под Модбас устройство-мастер?
2. Что значит "Нужно отправить ответ на запрос модбас мастера. Длина данных в ответе 120 байт. Уперся в то, что не могу понять как преобразовать различные типы данных переменных в HEX'ы(и наоборот) для последующей упаковки их в массив ответа"?
Если Вы пишете свой собственный Модбас-слейв модуль, то преобразовать REAL можно так
В четыре байта

(* FLOAT2BYTES *)
(* Converts a REAL Value into the corresponding *)
(* digital representation. [Inverse Operation of *)
(* "BYTES2FLOAT"] *)
FUNCTION float2bytes : ARRAY [0..3] OF BYTE
VAR_INPUT
IN: REAL;
END_VAR
VAR
ptv: POINTER TO ARRAY [0..3] OF BYTE;
END_VAR

ptv:=ADR(IN);
float2bytes:=ptv^;
в DINT так

(* FLOAT2DINT *)
(* Converts a REAL Value into the corresponding *)
(* digital representation. [Inverse Operation of *)
(* "DINT2FLOAT"] *)
FUNCTION float2dint : DINT
VAR_INPUT
IN: REAL;
END_VAR
VAR
ptv: POINTER TO DINT;
END_VAR

ptv:=ADR(IN);
float2dint:=ptv^;
Это функции из бесплатной библиотеки HBMutilities.lib http://www.users-conference.com/se_data/_filebank/3S/Russland%20sonstiges/HBMutil.zip
А если используете конфигуратор, то не понятно над чем Вы бьетесь.:)
Проверить преобразования в различные форматы можно здесь http://www.binaryconvert.com/index.html

S.A.D.
08.01.2013, 21:08
1. Что значит "подгонка ПЛК под Модбас устройство-мастер?
2. Что значит "Нужно отправить ответ на запрос модбас мастера. Длина данных в ответе 120 байт. Уперся в то, что не могу понять как преобразовать различные типы данных переменных в HEX'ы(и наоборот) для последующей упаковки их в массив ответа"?
Если Вы пишете свой собственный Модбас-слейв модуль, то преобразовать REAL можно так
В четыре бита

(* FLOAT2BYTES *)
(* Converts a REAL Value into the corresponding *)
(* digital representation. [Inverse Operation of *)
(* "BYTES2FLOAT"] *)
FUNCTION float2bytes : ARRAY [0..3] OF BYTE
VAR_INPUT
IN: REAL;
END_VAR
VAR
ptv: POINTER TO ARRAY [0..3] OF BYTE;
END_VAR

ptv:=ADR(IN);
float2bytes:=ptv^;
в DINT так

(* FLOAT2DINT *)
(* Converts a REAL Value into the corresponding *)
(* digital representation. [Inverse Operation of *)
(* "DINT2FLOAT"] *)
FUNCTION float2dint : DINT
VAR_INPUT
IN: REAL;
END_VAR
VAR
ptv: POINTER TO DINT;
END_VAR

ptv:=ADR(IN);
float2dint:=ptv^;
А если используете конфигуратор, то не понятно над чем Вы бьетесь.:)
Проверить преобразования в различные форматы можно здесь http://www.binaryconvert.com/index.html
да, я пишу свой модбас слейв, потому что в конфигурации ПЛК нет деления на холд и инпут регистры. Плк опрашивается устройством мастером которое групповым запросом опрашивает регистры modbus по 120 байт за раз. Поменять это устройство никак невозможно, поэтому нужно подстроить ответы ПЛК под эти запросы. В вашем варианте получается тип byte. вроде все верно, но все равно не будет в шестнадцатиричной системе, а ведь посылки MB должны быть в шестнадцатиричной или нет?

ASo
08.01.2013, 21:09
1. Что значит "подгонка ПЛК под Модбас устройство-мастер?Стандартная ситуация.
Есть некоторая система. Одно устройство умерло, отремонтировать или заменить на аналогичное или совместимое - не возможно (по любой причине). Программа в ведущем контроллере - не доступна.
Приходится - вот так, лепить эмуляцию.

Но ответа - пересекаются пространства input и holding регистров я так и не услышал. Если не пересекаются (а чаще всего - так) - то и ладно, не все ли равно, какой функцией считывать.

ASo
08.01.2013, 21:10
да, я пишу свой модбас слейв, потому что в конфигурации ПЛК нет деления на холд и инпут регистры. Плк опрашивается устройством мастером которое групповым запросом опрашивает регистры modbus по 120 байт за раз. Поменять это устройство никак невозможно, поэтому нужно подстроить ответы ПЛК под эти запросы. В вашем варианте получается тип byte. вроде все верно, но все равно не будет в шестнадцатиричной системе, а ведь посылки MB должны быть в шестнадцатиричной или нет?А как Вы собираетесь разобрать перехваченный запрос? Не слишком ли рискованно, если доки - нет:confused:

petera
08.01.2013, 21:16
Если все таки собственный модуль Модбас-слейв, то подсчитать CRC можно Функцией CRC_GEN от OSCATA описание http://www.owen.ru/forum/showpost.php?p=99084&postcount=4

petera
08.01.2013, 21:29
да, я пишу свой модбас слейв, потому что в конфигурации ПЛК нет деления на холд и инпут регистры. Плк опрашивается устройством мастером которое групповым запросом опрашивает регистры modbus по 120 байт за раз. Поменять это устройство никак невозможно, поэтому нужно подстроить ответы ПЛК под эти запросы. В вашем варианте получается тип byte. вроде все верно, но все равно не будет в шестнадцатиричной системе, а ведь посылки MB должны быть в шестнадцатиричной или нет?
Вы получите массив из четырех байтов. В них будут нолики и единички - двоичная система счисления!
А HEX это тоже самое, только для удобства восприятия человеком.
0000b=0h
0001b=1h
0010b=2h
0011b=3h
............
1110b=Eh
1111b=Fh
и соответственно представление одного и того же числа
десятичное 23=(0001 0111)b=17h
десятичное 203=(1100 1011)b=CBh
Так что Вы точно зациклились на пустом месте:)
Как и с

нет деления на холд и инпут регистры
совершенно на ровном месте:)

petera
08.01.2013, 21:36
надеюсь Вы знаете что библиотека модбас, в обход конфигуратора, существует, для некоторых устройств только требуется в REAL-ах поменять байты местами
А разве в ModBus.lib есть блоки для создания Slave?

S.A.D.
09.01.2013, 10:08
А как Вы собираетесь разобрать перехваченный запрос? Не слишком ли рискованно, если доки - нет:confused:

через pointer_to_byte. Ведь известно в каких байтах модбас запроса лежит нужная мне информация.


а что разве нет? Может быть я со своими наработками спутал, но вроде где то были выложены архивы и отдельно мастер и отдельно слейв
согласно документации на modbus.lib она только под мастер заточена. Хотя я могу конечно ошибаться. Я не настолько еще силен, чтоб все правильно анализировать.

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

S.A.D.
09.01.2013, 10:10
если в мастере используются как в инпутах, так и в холдах адреса начинающиеся с нуля, попробуйте использовать слейв с универсальной общей памятью :) не такое уж и ровное место получится

совершенно верно, все так и есть как говорит capzap. Поэтому и приходится велосипед изобретать)) С другой стороны с этим надо разобраться в любом случае.:)

S.A.D.
09.01.2013, 10:54
Еще раз повторю, мастера должны делаться редактируемыми, чтоб подстроиться под любой слейв, а не наоборот. Ваш случай конечно возможен, но тут наверное лучше купить такую же железку что стояла, чтоб не ломать голову как теперь написать прогу.
По разработке программы, скачайте ОСКАТовскую библиотеку под network, в ней описан модбас сервер, там только необходимо его переработать из интерфейса modbasTCP в модбас для последовательной шины, т.е. убрать в начале 6 байт и в конце добавить контрольную сумму, ну и естественно способ передачи, не Ethernet а любая последовательная шина


ЗЫ при работе с модбас, забудте что есть , там есть только флаги(биты) и регистры(слово из 2-х байт)

я понимаю что мастер должен делаться редактируемым и то что я щас делаю это извращенство, но тут просто нестандартный случай. Библиотеку посмотрю, спасибо.
ЗЫ: спасибо за это замечание, но как же тогда впихнуть переменную real в 2 регистра? Что-то я где-то не понимаю в основах информатики видимо. Слово из двух байт это 16 бит(флагов). Переменная типа real занимает 4 байта, т.е. 32 бит. Как мне записать в блоке данных массива ответа (который является кадром Modbus rtu) эту переменную, чтобы мастер понял мой ответ?

S.A.D.
09.01.2013, 11:14
http://kipshop.ru/Primeri/Samples_plc1xx/Communication/06_ModBus_And_OwenNet.zip может здесь есть, там всего лишь реал надо разбить с помощью указателя на четыре байта и поменять зеркально местами
спасибо за помощь. Буду пытаться разобраться

S.A.D.
09.01.2013, 18:11
Снова появился возможно глупый вопрос. Но ответа я на него найти не могу. Возможно ли в CDS что-то вроде наследования? Ну то есть у меня есть FB в котором входная переменная массив. Мне нужно присваивать этому входному массиву данные других массивов, которые разные по длине. Собственно длину массива мне и нужно наследовать, потому что мне этот FB нужен будет не единожды, а копировать его в разные места не хочется. Однако компилятор требует чтоб входной массив FB был объявлен с длиной.

S.A.D.
10.01.2013, 10:31
Создайте входные переменные, это указатель POINTER TO BYTE на начальный адрес массива и вторая переменная это количество, сколько элементов массива требуется обработать. И в теле ФБ через цикл обрабатываете все элементы не забывая после сделать приращение указателю

спасибо за ответ. То есть мы получается последовательно прописываем каждый элемент в массив ФБ. Однако при объявлении массива ФБ все равно потребуется указать его длину? Дело в том, что длина этого входного массива принципиально важна, т.к. в ФБ при вычислении используется его длина.

Aleksandr Ermak
12.01.2013, 21:09
Хлопцы ! Подскажите . По разным причинам начал учить CFC (с ноля ) .Где можно найти описание операторов и блоков (EQ .GT.OR .LT и т.д.)

ASo
12.01.2013, 21:10
В справке или прилагаемом описании.

S.A.D.
14.01.2013, 11:19
нет, внутри тела ФБ мы вообще не должны знать о параметрах массива, мы обрабатываем через FOR либо байт либо слово либо двойное слово, исходя из размерности ячейки массива, получив указатель на начальный байт массива, это означает что на вход ФБ подаем POINTER TO BYTE, а не POINTER TO ARRAY...
а в "родителе" ФБ мы вольны создавать массив какой угодно, например используя динамическое выделение памяти

не могу сказать что до конца понял как это реализовать. Не могли бы вы меня пнуть в направлении описания реализации динамического выделения памяти? А что-то не могу в руководстве Codesys найти, а так как это делается в паскале компилятор сделать не дает. Возможно после прочтения об реализации сего я пойму что к чему.

Aleksandr_Sorokin
14.01.2013, 13:31
Вопрос: в даташите написано "Сохраняемые переменные обозначаются ключевым словом RETAIN. Эти переменные сохраняют свои значения, даже если произошла авария питания (выключение и включение) контроллера, что равносильно команде сброс (''Онлайн' 'Сброс'')"
У меня переменные объявлены как "VAR RETAIN PERSISTENT", программу опробую в режиме эмуляции, при старте/стопе программы данные переменные сохраняют свои значения, однако при команде "Онлайн/сброс" они обнуляются, вопреки написанному в мануале. Так вот, я нахожу на мысль, что данный случай возможен только в режиме эмуляции и при работе на реальном контроллере эти переменные при сбросе обнулятся не будут (но, к сожалению, реального ПЛК у меня нет). Прошу матёрых специалистов подтвердить или опровергнуть мои домыслы.
Спасибо.

S.A.D.
14.01.2013, 15:54
вопреки хэлпу кодезиса (по крайней мере на ПЛК100) сброс убивает все переменные.

capzap
14.01.2013, 16:21
не могу сказать что до конца понял как это реализовать. Не могли бы вы меня пнуть в направлении описания реализации динамического выделения памяти? А что-то не могу в руководстве Codesys найти, а так как это делается в паскале компилятор сделать не дает. Возможно после прочтения об реализации сего я пойму что к чему.

если чем то поможет, вот ссылка на видео http://www.owen.ru/forum/showpost.php?p=91600&postcount=15 , ну и соответственно саму тему почитать с первых постов, а так же на диске в разделе системных библиотек есть документация на бибку по работе с памятью

S.A.D.
14.01.2013, 16:26
товарищи, у меня разрыв шаблона в мозгу. Нужно склеить 2 переменные типа BYTE в одну типа WORD. Делаю
x:=16#A3;
y:=16#B9;

xy:=SHL(x,8) + y; и на выходе получаю 16#00B9. тоже самое если сдвиг написать руками умножив x на FF. Непонимаю почему так? х просто теряется.

S.A.D.
14.01.2013, 16:26
если чем то поможет, вот ссылка на видео http://www.owen.ru/forum/showpost.php?p=91600&postcount=15 , ну и соответственно саму тему почитать с первых постов, а так же на диске в разделе системных библиотек есть документация на бибку по работе с памятью

премного благодарен. Буду изучать.

petera
14.01.2013, 16:43
товарищи, у меня разрыв шаблона в мозгу. Нужно склеить 2 переменные типа BYTE в одну типа WORD. Делаю
x:=16#A3;
y:=16#B9;

xy:=SHL(x,8) + y; и на выходе получаю 16#00B9. тоже самое если сдвиг написать руками умножив x на FF. Непонимаю почему так? х просто теряется.
А так
xy:=SHL(BYTE_TO_WORD(x),8) OR BYTE_TO_WORD(y);:)
ЗЫ.
SHL(x,8) => x:=0
0+B9=B9

S.A.D.
14.01.2013, 16:49
А так
xy:=SHL(BYTE_TO_WORD(x),8) OR BYTE_TO_WORD(y);:)

логично:D . Спасибо большое)

Валенок
14.01.2013, 22:55
Еще проще
xy:=x*256+y;
Все приведения типов здесь уже есть.

S.A.D.
15.01.2013, 10:59
Еще проще
xy:=x*256+y;
Все приведения типов здесь уже есть.

у меня так не заработало. Правда умножал я на 16#FF. Но разницы то по сути нет.

capzap
15.01.2013, 11:21
попробуйте такую форму 16#0100, а то как бы разница то есть, а еще лучше указать тип дополнительно

nb1979
15.01.2013, 15:26
В книге Петрова И.В. (Программируемые контроллеры приводится такой пример):


Как было описано выше, ПЛК функционирует циклически — чтение входов, выполнение прикладной программы и запись выходов. В результате прикладное программирование для МЭК ПЛК существенно отличается от традиционной модели, применяемой при работе на языках высокого уровня ПК. Рассмотрим в качестве иллюстрации простейшую задачу: необходимо запрограммировать мерцающий световой индикатор. Очевидно, что алгоритм должен быть примерно такой:
1) включить выход;
2) выдержать паузу;
3) выключить выход;
4) выдержать паузу;
5) переход к шагу 1 (начало программы);
6) конец программы.

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


А теперь вопрос - Как реализовать этот неправильный пример, чтобы он действительно не работал? (как сделать правильно я знаю). :confused:

capzap
15.01.2013, 19:05
В книге Петрова И.В. (Программируемые контроллеры приводится такой пример):


А теперь вопрос - Как реализовать этот неправильный пример, чтобы он действительно не работал? (как сделать правильно я знаю). :confused:

Через while например, условие цикла true, а тело цикла это описанные две паузы и включение/выключение

nb1979
16.01.2013, 16:12
Через while например, условие цикла true, а тело цикла это описанные две паузы и включение/выключение

Если делать бесконечный цикл, то встроенный в контроллер сторожевой таймер воспринимает это как зависание программы и просто сбрасывает контроллер по истечении заданного в конфигурации максимального времени цикла ПЛК, а сама программа по сути не работает (даже неправильно).
Если бы можно было как-то вручную задать фиксированное время цикла ПЛК, например 10 с, то тогда этот принцип, указанный Петровым, можно было бы легко продемонстрировать.:confused:

capzap
16.01.2013, 17:06
Если делать бесконечный цикл, то встроенный в контроллер сторожевой таймер воспринимает это как зависание программы и просто сбрасывает контроллер по истечении заданного в конфигурации максимального времени цикла ПЛК, а сама программа по сути не работает (даже неправильно).
Если бы можно было как-то вручную задать фиксированное время цикла ПЛК, например 10 с, то тогда этот принцип, указанный Петровым, можно было бы легко продемонстрировать.:confused:

непонимаю сути Ваших претензий к Игорю
она содержит бесконечный циклВы же сами его процитировали и именно по этому такой код работать не будет, потому что плк перезагрузится, а если убрать цикл, то выход останется всегда в ФАЛЬШ по тому что в реальные выхода, будет подаваться последнее записаное значение переменной, причем не важно что во время цикла она была постоянно ИСТИНА, а в последней строчке кода программы присвоили ей ФАЛЬШ, вот это значение и уйдет в физический выход или в модбас переменную

По поводу вручную задать фиксированный цикл, кто мешает, перейдите в менеджер задач и сконфигурируйте свою задачу

Yegor
17.01.2013, 06:50
В приведённом тексте выбраны не самые удачные формулировки, и оттого разница между моделями программирования ускользает от читателя-новичка. На самом деле, если правильно написать подобную программу-мигалку, скажем, на SFC, то она будет полностью соответствовать тому описанию:

http://images.devs-on.net/Image/XCyLG6gTlc6021Bj-Untitled100Pain.png

На месте автора я бы взял другой пример. Например, запись текущего времени в переменную и актуализация этого значения:
// ПК:
while (true)
{
cur_time := TIME();
Sleep(20);
}

(* ПЛК *)
cur_time := TIME();Или с миганием:
out := TIME() MOD 1000 > 500; (* опа фанкшен стайл 8-] *)И отсюда можно плясать о том, почему для ПЛК программа получается такой короткой. Это должно заставить думать иначе.

nb1979
17.01.2013, 07:10
непонимаю сути Ваших претензий к ИгорюВы же сами его процитировали и именно по этому такой код работать не будет, потому что плк перезагрузится, а если убрать цикл, то выход останется всегда в ФАЛЬШ по тому что в реальные выхода, будет подаваться последнее записаное значение переменной, причем не важно что во время цикла она была постоянно ИСТИНА, а в последней строчке кода программы присвоили ей ФАЛЬШ, вот это значение и уйдет в физический выход или в модбас переменную


Принцип функционирования ПЛК я понимаю. Никаких претензий к Игорю нет, просто я хочу продемонстрировать это отличие в программировании ПЛК на практике, а не на словах. А подходящего примера не могу придумать. Если убрать цикл while, то как раз таки все должно функционировать нормально, т.к. программа уже не будет выполнятся в рамках одного цикла ПЛК и все указанные действия будут последовательно выполнены.


По поводу вручную задать фиксированный цикл, кто мешает, перейдите в менеджер задач и сконфигурируйте свою задачу

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


В приведённом тексте выбраны не самые удачные формулировки, и оттого разница между моделями программирования ускользает от читателя-новичка. На самом деле, если правильно написать подобную программу-мигалку, скажем, на SFC, то она будет полностью соответствовать тому описанию:


Спасибо за красивый привильный пример, но увы он правильный :)

Yegor
17.01.2013, 07:33
увы он правильныйПотому что описание правильное, говорю же. Из него вообще никак не следует, что реализованная по этому алгоритму программа для ПЛК работать не будет. Она будет. С таким описанием алгоритма получается, что автор книги сделал ложный вывод и на этот ложный вывод вы хотите за уши притянуть пример неправильной программы с паузами в потоке исполнения. Такую неправильную для ПЛК программу написать очень легко, но не по этому описанию, а по его частному случаю.

capzap
17.01.2013, 08:19
[QUOTE=nb1979;100348]Конфигурировал, сброс произойдет в любом случае. Смысл в том, что в рамках этого одного цикла значения переменных даже один раз не успевают установится т.к. сторожевой таймер делает сброс раньше.
Вы что ребенок индиго, Вы в состоянии отследить изменения в единицы микросекунд., что так говорите
Уберите цикл и поставте счетчик после каждого изменения состояния и увидите что за цикл переменные меняются


ЗЫ в плк нет многозадачности в плане выполнения параллельно инструкций процессора, поэтому когда выполняется бесконечный цикл, контроллер не отправит в КДС свои значения, поэтому Вы в режиме онлайн не увидите ни каких изменений до сброса плк

ЗЫЫ если хотите все же увидеть эффект переключения, тогда программу надо поменять от прямых присваиваний в следующее flag:= NOT flag; и так нечетное количество раз, тогда возможно по окончанию цикла можно будет увидеть измененное состояние

isvlad
17.01.2013, 09:40
Здравствуйте!

Столкнулся с проблемой. Периодически, при внесении изменений в конфигурацию, перестают работать соединения по MODBUS TCP SLAVE и MODBUS RS485 MASTER. При этом если всё вернуть как было - соединение не восстанавливается. MODBUS TCP SLAVE лечится удалением/добавлением TCP[VAR]. MODBUS RS485 MASTER не лечится даже при полном удалении ветки. Сброс и холодный сброс не помогают. Соединение с CoDeSys проходит нормально.

ПЛК-110-30-220 + МВА8 (по RS-485)

Подскажите пожалуйста в чём может быть дело и можно ли как-то ещё дистанционно решить проблему?

isvlad
17.01.2013, 09:55
пока непонятно о чем Вы написали. При изменении конфигурации и подключении к плк, среда разработки попросит залить проект по новой и следовательно если заливка прошла успешно будет ждать когда Вы нажмете старт(F5)
Старт я нажимаю. Загрузочный проект тоже создаю. В конфигурации всё настроено, причём настроено так же как и когда работало, 1 в 1.

Кстати, кнопка старт на работу MODBUS SLAVE TCP не влияет. Т.е. программа может быть остановлена, а связь работать.

Gans
17.01.2013, 10:52
Здравствуйте, Isvlad.

Старт я нажимаю. Загрузочный проект тоже создаю. В конфигурации всё настроено, причём настроено так же как и когда работало, 1 в 1.
Выключите на 15 минут контроллер или нажмите Reset на ПЛКххх и всё будет работать :-)

Николаев Андрей
17.01.2013, 11:08
И не забывайте после внесения изменений очищать все, и перекомпилировать все.

isvlad
17.01.2013, 11:12
Здравствуйте, Isvlad.

Выключите на 15 минут контроллер или нажмите Reset на ПЛКххх и всё будет работать :-)

Попробую конечно, но проблема в том что всё это установлено далеко и ездить на объект перезапускать вручную каждый раз возможности нет. А самое главное непонятны причины по которым это происходит.

Кстати, может кто-нибудь подскажет. Заводской сброс сотрёт сетевые настройки (ip, gateway и т.п.)?

isvlad
17.01.2013, 11:15
И не забывайте после внесения изменений очищать все, и перекомпилировать все.

очищать все - что Вы имеете ввиду?

Николаев Андрей
17.01.2013, 11:19
Меню (по моему) проект. Команда очистить все.
Вы меня простите, не хочу никого учить, но мне кажется не совсем правильным менять конфигурацию ПЛК на работающем объекте. Причем удаленном...
IP и Gateway не сбросятся. Сбросится программа и во Flash (вместе с конфигурационными файлами ModBus и пр) и из ОЗУ.

isvlad
17.01.2013, 11:30
Меню (по моему) проект. Команда очистить все.

Спасибо попробую


Вы меня простите, не хочу никого учить, но мне кажется не совсем правильным менять конфигурацию ПЛК на работающем объекте. Причем удаленном...

Полностью с Вами согласен. Просто я меньше месяца как приобрёл данный контроллер. Осваиваю...



IP и Gateway не сбросятся. Сбросится программа и во Flash (вместе с конфигурационными файлами ModBus и пр) и из ОЗУ.

Т.е. по идее если сделать заводской сброс и залить всё по новой, то это может помочь в моём случае?

isvlad
17.01.2013, 21:55
Увы. Ни полная очистка ни заводской сброс не помогают

Валенок
17.01.2013, 22:13
Ну тогда, как ни банально, самое правильное - выложить проекты. И мастеров и слейвов. (Секретный код - можно снести)

isvlad
17.01.2013, 22:41
Ну тогда, как ни банально, самое правильное - выложить проекты. И мастеров и слейвов. (Секретный код - можно снести)

Выкладываю проект

Валенок
18.01.2013, 00:06
Настройки самого МВА8 ?
(и шаблоны - не очень. Лучше уж UMD)
PS
Осторожненько - диод RS на МВА8 молчит ?

isvlad
18.01.2013, 00:28
Настройки самого МВА8 ?
(и шаблоны - не очень. Лучше уж UMD)

пару дней назад всё работало нормально



Осторожненько - диод RS на МВА8 молчит ?

Диод не вижу, контроллер с модулем на удалёнке. Печалит то, что нет активности на RS-485 - последняя ошибка 0 всегда и адрес не меняется. Но больше всего ставит в тупик периодическое пропадание TCP. Там параметров кроме порта, который я никогда не менял, вообще нет. Тем более непонятно, что связь то с контроллером из CoDeSys работает.

Кстати, не знаю имеет ли это значение, но я не совсем правильно написал. у меня не МВА8, а МВ110-224.8А на 220В (на сайте кстати такого нет, как он мне достался ума не приложу :) ).

Валенок
18.01.2013, 02:58
последняя ошибка 0 всегда и адрес не меняется

Ошибка 0. Адрес не меняется - так какой адрес-то ? 16 ?

МВ110-8А - таже МВА8. Так его проект будет ?

В 99.999% - чего-то упустили. Варианты банальные.
1.МВ - удален. И выключен. :)
2.Неправильно подключены АB/Перебита витая пара.
3.Не снята перемычка на МВ/Не перезагружен МВ после перенастройки
4.Какая-то цифирка но совпадает в настройках портов и протоколов ПЛК-МВ/Что-то с адресами регистров напутано.
5.Пытаемся (утрирую до абсурда) опрашивать стопицот регистров каждые 10мс на ASCii при 9600
6.С каким-то фанатичным упрямством используем AT% для области обмена (хотя средства КДС позволяет просто забыть про них) - и после манипуляций в конфигурации забываем поправить адреса. Пялимся после пуска на энти переменные, не видим изменений или в них чушь.

Думаю что где-то 4..5. Ну точно не 6 :)

Amko
18.01.2013, 08:05
Добавлю. Сталкивался с тем, что иногда при изменении параметров опроса слейва мой ПЛК110 переставал опрашивать всю периферию. Причем это лечилось только заводским сбросом и передергиванием питания. Без выключения ПЛК ничего не заводилось.

isvlad
18.01.2013, 08:29
Ошибка 0. Адрес не меняется - так какой адрес-то ? 16 ?
Да 16



Так его проект будет ?

не понял



1.МВ - удален. И выключен. :)

питаются по одной линии



2.Неправильно подключены АB/Перебита витая пара.

A->A, B->B



3.Не снята перемычка на МВ/Не перезагружен МВ после перенастройки

О какой перемычке идёт речь?

isvlad
18.01.2013, 08:31
Может быть есть смысл приспособить 1 из выходов под самосброс по питанию через реле?

Валенок
18.01.2013, 12:00
последняя ошибка 0 всегда и адрес не меняется.

Да 16
А проблема-то в чем ?
LastError = 0
LastAddres= 16 ?

isvlad
18.01.2013, 12:03
А проблема-то в чем ?
LastError = 0
LastAddres= 16 ?

В том, что LastAddres тоже 0. А раз 0 то видимо опрос и не начинается. Или я неправ?

Валенок
18.01.2013, 12:12
Не начинается. Факт.
Делаем с нуля пустой проект. 1 мастер. UMD. Читать 1 регистр с МВА8. (Любой 0..47).
Получится ?
Заводской сброс перед заливкой.

isvlad
18.01.2013, 15:20
Не начинается. Факт.
Делаем с нуля пустой проект. 1 мастер. UMD. Читать 1 регистр с МВА8. (Любой 0..47).
Получится ?
Заводской сброс перед заливкой.

Не получилось :(

capzap
18.01.2013, 15:37
Не получилось :(

http://www.owen.ru/forum/showthread.php?t=13580 отсуда пробовали какой нибудь пример взять за основу

ЗЫ или этот http://kipshop.ru/Primeri/DevicesOwen/05_PLC1xx+TRM202+MVA8_Modbus%20RTU.zip

Валенок
18.01.2013, 16:21
Не получилось :(
lastaddress смотрим непосредственно в конфигурации и он 0 ?

isvlad
18.01.2013, 17:48
lastaddress смотрим непосредственно в конфигурации и он 0 ?
Да, именно так (странно, что нельзя меньше 10 символов ответ писать :))

isvlad
18.01.2013, 17:51
http://www.owen.ru/forum/showthread.php?t=13580 отсуда пробовали какой нибудь пример взять за основу

ЗЫ или этот http://kipshop.ru/Primeri/DevicesOwen/05_PLC1xx+TRM202+MVA8_Modbus%20RTU.zip

Да, на основе их и делал.

capzap
18.01.2013, 17:55
Да, на основе их и делал.

попробуйте тогда через библиотеки, а не через конфигуратор, думаю Валенок поддержит такое предложение :)

isvlad
18.01.2013, 18:35
попробуйте тогда через библиотеки, а не через конфигуратор, думаю Валенок поддержит такое предложение :)

Сегодня попробую перезапустить по питанию, а там видно будет. Если поможет и будет стабильно работать (сбои происходят только после загрузки обновлённой программы), то видимо поставлю реле на сброс питания. Через библиотеки конечно не очень бы хотелось, хотя видимо придётся.

А вот интересно, обработчик конфигурации прошит в ПЛК или грузится вместе с программой?

P.S. Какие файлы должны остаться на ПЛК после заводского сброса? Или иными словами: какие файлы нельзя удалять?

capzap
18.01.2013, 18:53
Сегодня попробую перезапустить по питанию, а там видно будет. Если поможет и будет стабильно работать (сбои происходят только после загрузки обновлённой программы), то видимо поставлю реле на сброс питания. Через библиотеки конечно не очень бы хотелось, хотя видимо придётся.

А вот интересно, обработчик конфигурации прошит в ПЛК или грузится вместе с программой?

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

Валенок
18.01.2013, 19:12
Явно что-то с портом. Совет Аmko #1558 есть смысл попробывать.
Думаю что Николаев Андрей может начать распросы про версии прошивки/таржеты ?
А power status в statistic'е - синий ?

Тупая проверка порта.
У вас 110-30. 2xRS-485. Заведите сам на себя. На RS-1 мастер, RS-2 слейв. Попробуйте самое простое 8/N/1, RTU, всякие фрамтаймы - 0. Один регистр в слейве. Один в мастере.

))))) Даже не предполагал такого гимора с штатными мастерами. Хихикаю.


попробуйте тогда через библиотеки, а не через конфигуратор, думаю Валенок поддержит такое предложение
На любителя (типо меня). Не зависящая от каких-то таржетов, версий прошивок, модели плк вещь. Как стал использовать - сетевые проблемы стали воспоминаниями.

isvlad
18.01.2013, 23:21
Приехал, вижу индикатор обмена мигает??? Попробовал подключиться - исходники не читаются, хотя я на 100%уверен, что в последний раз заливал их. Дальше - больше. Залил старую версию программы, которая осталась на другом компьютере. И чудо!!! Всё заработало даже без сброса питания!

С одной стороны это замечательно, а с другой - ставит меня в ещё больший тупик. Раз индикатор обмена на МВ8А мигал - значит обмен был. Хотя его как бы не было. Что же получается, я с разных компов залил разные программы, которые как-то параллельно работали? В CoDeSys вроде всё одинаково устанавливал. Попробовать переустановить CDS на том компе с которого проблемная прога грузилась?

З.Ы. Опять же, днём пробовал залить пустую прогу (только мастер) с чисто установленного CDS. Непонятно...

З.З.Ы. А TCP slave всёравно отваливается...

Amko
19.01.2013, 08:11
Что же получается, я с разных компов залил разные программы, которые как-то параллельно работали?
http://www.owen.ru/forum/showthread.php?t=14012

Валенок
19.01.2013, 14:03
Опять же, днём пробовал залить пустую прогу (только мастер) с чисто установленного CDS. Непонятно...
Пустая прога с мастером. UMD или шаблон МВА8 ?

isvlad
20.01.2013, 00:57
Пустая прога с мастером. UMD или шаблон МВА8 ?
-Пустая прога.
-Пустая прога с мастером UMD
-Пустая прога с мастером МВА8
Разные варианты пробовал.

Валенок
20.01.2013, 11:53
Залил старую версию программы...Всё заработало.Партизан isvlad, выложите и старую и новую версии

isvlad
20.01.2013, 14:36
Партизан isvlad, выложите и старую и новую версии

Выкладываю работающий вариант (неработающий выложен ранее).

isvlad
20.01.2013, 15:00
Вот, что я обнаружил:

В архива 2 файла.
Первый - это таргет с прилагаемого к ПЛК диска. Установлен там, где проблем с MASTER нет.

Второй скачан с сайта OWEN и установлен там где были проблемы.

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

В этом наверное корень зла?

Валенок
21.01.2013, 15:57
Может и в этом. Переустановите - проверите.
Прошу извинить. Таржеты волнуют только для связи с КДС

isvlad
21.01.2013, 16:25
Может и в этом. Переустановите - проверите.
Прошу извинить. Таржеты волнуют только для связи с КДС

а как быть с TCP SLAVE? можно ли его программно сбросить? или емеет смысл реализовать его через библиотеки?

Anth
22.01.2013, 10:38
библиотека

sadspirit
26.01.2013, 09:30
Столкнулся с проблемой. Периодически, при внесении изменений в конфигурацию, перестают работать соединения по MODBUS TCP SLAVE и MODBUS RS485 MASTER. При этом если всё вернуть как было - соединение не восстанавливается. MODBUS TCP SLAVE лечится удалением/добавлением TCP[VAR]. MODBUS RS485 MASTER не лечится даже при полном удалении ветки. Сброс и холодный сброс не помогают. Соединение с CoDeSys проходит нормально.

ПЛК-110-30-220 + МВА8 (по RS-485)


Неделю бился с таким -же косяком (вместо мва-мдвв, вместо плк110-плк100). Позавчера победил путем вынесения в отдельную сеть езернет.
Как оказалось позже, на том-же адресе, что и плк висело другое tcp устройство (ip камеру враги повесили). Каким-то образом это убивало соединение по rs-485 именно в момент обновления программы. (коннект к мдвв поднимался, если обесточить плк минут на 20)
После устранения конфликта ип, и возврата в общую сеть, все работает нормально вторые сутки. (тьфу *3)

perunov
31.01.2013, 15:34
Добрый день. Подскажите можно ли с помощью панели ИП320 считать данные например с ТРМ 202 напрямую, без плк. Заранее благодарен. С уважением, Дмитрий.

capzap
31.01.2013, 16:48
Добрый день. Подскажите можно ли с помощью панели ИП320 считать данные например с ТРМ 202 напрямую, без плк. Заранее благодарен. С уважением, Дмитрий.
без плк можно

perunov
01.02.2013, 11:32
без плк можно
Разобрался с подключением, спасибо. Возник ещё один вопрос. На ТРМ 202 есть возможность отображения сразу 2х параметров температуры, с 1 и 2 входа соответственно. Из инструкции к трм202 "Оперативные параметры индексируются через сетевой адрес. Например, ТРМ202 имеет два входа. Для считывания измеряемого значения с входа 1 следует прочитать значение параметра PV с сетевым адресом, заданным в параметре Addr, для считывания измеряемого значения с входа 2 – с сетевым адресом Addr +1", когда считываешь их прибором МСД200, проблем нет, например адрес ТРМа 20, для считывания ставишь 21 и всё. Теперь вопрос, как это реализовать на панели оператора ИП320? Заранее признателен за помощь.

capzap
01.02.2013, 11:42
Разобрался с подключением, спасибо. Возник ещё один вопрос. На ТРМ 202 есть возможность отображения сразу 2х параметров температуры, с 1 и 2 входа соответственно. Из инструкции к трм202 "Оперативные параметры индексируются через сетевой адрес. Например, ТРМ202 имеет два входа. Для считывания измеряемого значения с входа 1 следует прочитать значение параметра PV с сетевым адресом, заданным в параметре Addr, для считывания измеряемого значения с входа 2 – с сетевым адресом Addr +1", когда считываешь их прибором МСД200, проблем нет, например адрес ТРМа 20, для считывания ставишь 21 и всё. Теперь вопрос, как это реализовать на панели оператора ИП320? Заранее признателен за помощь.

напишите, каким протоколом Вы вообще собираетесь пользоваться?

perunov
01.02.2013, 12:00
напишите, каким протоколом Вы вообще собираетесь пользоваться?
МодбасРТУ. На панель вывел температуру со входа 1 и разницу между входами 1 и 2, не получается вывести температуру со входа 2.

capzap
01.02.2013, 12:18
МодбасРТУ. На панель вывел температуру со входа 1 и разницу между входами 1 и 2, не получается вывести температуру со входа 2.
ну а зачем тогда цитируете РЭ из раздела работы с протоколом ОВЕН?
скачайте http://www.owen.ru/uploads/ki_prm_trm202_033.pdf и смотрите какие адреса принадлежат второму каналу

perunov
01.02.2013, 13:15
ну а зачем тогда цитируете РЭ из раздела работы с протоколом ОВЕН?
скачайте http://www.owen.ru/uploads/ki_prm_trm202_033.pdf и смотрите какие адреса принадлежат второму каналу
Сглупил! Огромное спасибо. Проблема полностью исчерпана.

XOXOL
04.02.2013, 13:49
Непонятность такова. Плк 150(мастер)+ип320(слев). 232. вывод с плк в конкретные биты через 8 bit otput module(допустим на лампочки в панели) происходит без проблем. если по действию нажатия кнопки "1" происходит запись в бит (лампочка привязанная к этому же биту показывает индакацию) то через 8 bit input module ничего не вижу. 100 раз проверял и номера битов, регистров. где зарылся таракан??кстати то же самое и с регистром, вывести могу, получить с панели в плк ну никак.

Валенок
06.02.2013, 21:45
Вопрос висит долго. Меня именно подобная шняга заставила уйти на syslibcom. Я более чем доволен.
Но возможно какая-то простая фигня на уровне настроек.Если выложите оба проекта (ПЛК и ИП) - шансы разобраться будут выше.

XOXOL
06.02.2013, 22:15
По многочисленному просьбе :) выкладываю. я понимаю что где-то мелочь, но грабли всё равно есть. кстати добавлю про команды модбас, перепробовал тоже все, с 01 до 04

Валенок
07.02.2013, 01:46
В принципе все нормально. Биты только в панели с 1, а в ПЛК с 0. Индикатор - ни к чему не привязан.

Оптимальней - 38400 + ИП320 страдает за каким-то плавающей задержкой ответа 20..50мс + иногда ей нужны за каким-то паузы перед запросами 30..50мс.Настраивать это в штатном мастере - гимор.То что данные уходят туда - это нормально, т.к. панель ловит запрос на запись (даже если через раз), ответ приходит коряво а Вы это не видите. И именно поэтому с чтением оттуда - фиговато.Polltime (от 200 ?) и framing time (?) -наверно могут помочь.

Ну и могут посоветовать (не я) - сделать панель мастером.

PS
Ввиду рояля в кустах.
8 inputs module : 0x02 - не катит. 0x01 или 0x03. (0x04 - заломало проверять).
А с просто регистрами - проблем нет.

Выше сказанное про время - видно невооруженным взглядом.

XOXOL
07.02.2013, 12:24
Спасибо. продолжим эксперименты. индакатор я просто могу зажигать когда работает плк, просто активируя 7 бит. а про ип в мастера не сильно хочу, потому что задача будет с кучей девайсов, и плк будет ими управлять. большое ещё раз спасибо. о результатах сообщу.

Петр С.
07.02.2013, 14:59
Здравствуйте, уважаемые форумчане.
Хочу задать вопрос, который, скорее всего, покажется вам очень примитивным. Но все таки...
При программировании контроллера ПЛК160 в CoDeSys возникла проблема: значения переменных на входах HIGH и LOW блока HYSTERESIS не сохраняются в памяти контроллера после отключения питания.
Переменные локальные, класс VAR RETAIN, тип INT, значение - целое число. Впрочем, посмотрите все сами, проект я прилагаю.
До отключения питания контроллера программа работает нормально, после снятия\восстановления питания перестает.
Может быть, еще есть какие-то косяки в программе, подскажите пожалуйста, я CoDeSys и ПЛК впервые увидел недели 2 назад...
Очень рассчитываю на вашу помощь!

Петр С.
07.02.2013, 15:27
На последнее сообщение можно не отвечать, сам догадался.

Валенок
07.02.2013, 15:37
индикатор я просто могу зажигать когда работает плк, просто активируя 7 бит.
Индикатор в этом виде - в онлайне никак не включите из ПЛК. Инпутс модуле. А в панели - никто не привязан к нему

XOXOL
07.02.2013, 18:09
ой.простите.правда. для опыта ставил оутпут, которого в прикреплённом нету. и так же делал опыт когда индикатору присваивал один из битов привязанных к кнопке, а в кнопку добавлял реверс, дабы проверить происходит ли вообще запись в бит по событию, на уровне ип320 (в голове) происходит,а до плк не доходит

S.A.D.
08.02.2013, 10:39
доброго времени суток. Подскажите пожалуйста логику работы ПЛК. Я понимаю, что он однозадачный, но всеже в упрощенном варианте при вызове ФБ ПЛК сначала заходит в экземпляр ФБ, выполняет его полностью и идет дальше по коду программы-родителя или как-то распределяет процессорное время создавая илюзию многозадачности, т.е. выполнил кусочек экземпляра ФБ, пошел дальше по коду родителя, в след. цикле еще кусочек и т.д.? Просто есть какая-то коллизия вот в этом куске кода:
RtB(f_in:=MIN_IN_PRESS); (*2B6_hex*)
HOLD[1388]:=RtB.byte_1;
HOLD[1389]:=RtB.byte_2;
HOLD[1390]:=RtB.byte_3;
HOLD[1391]:=RtB.byte_4;

RtB(f_in:=PRESS_ON); (*2BA_hex*)
HOLD[1396]:=RtB.byte_1;
HOLD[1397]:=RtB.byte_2;
HOLD[1398]:=RtB.byte_3;
HOLD[1399]:=RtB.byte_4;

ФБ RtB разбивает переменную типа REAL на 4 переменных типа BYTE, которые складываются в массив типа BYTE. И при преобразовании первой переменной оказывается влияние и на вторую. Вот я и задался вопросом о том как работает ФБ? Использую один экземпляр ФБ потому что не хочу засорять проект кучей экземпляров, т.к. таких преобразований для заполнения массива достаточно много

Валенок
08.02.2013, 10:51
Никаких коллизий нет и не может быть для указанного способа использования если только не намутили внутри ФБ.Что там делает внутри Ваш ФБ - только Вы и знаете.
Для описанной задачи внутренность ФБ - это 2-4 строчки. Как там можно намутить ? :)

capzap
08.02.2013, 11:07
доброго времени суток. Подскажите пожалуйста логику работы ПЛК. Я понимаю, что он однозадачный, но всеже в упрощенном варианте при вызове ФБ ПЛК сначала заходит в экземпляр ФБ, выполняет его полностью и идет дальше по коду программы-родителя или как-то распределяет процессорное время создавая илюзию многозадачности, т.е. выполнил кусочек экземпляра ФБ, пошел дальше по коду родителя, в след. цикле еще кусочек и т.д.? Просто есть какая-то коллизия вот в этом куске кода:
RtB(f_in:=MIN_IN_PRESS); (*2B6_hex*)
HOLD[1388]:=RtB.byte_1;
HOLD[1389]:=RtB.byte_2;
HOLD[1390]:=RtB.byte_3;
HOLD[1391]:=RtB.byte_4;

RtB(f_in:=PRESS_ON); (*2BA_hex*)
HOLD[1396]:=RtB.byte_1;
HOLD[1397]:=RtB.byte_2;
HOLD[1398]:=RtB.byte_3;
HOLD[1399]:=RtB.byte_4;

ФБ RtB разбивает переменную типа REAL на 4 переменных типа BYTE, которые складываются в массив типа BYTE. И при преобразовании первой переменной оказывается влияние и на вторую. Вот я и задался вопросом о том как работает ФБ? Использую один экземпляр ФБ потому что не хочу засорять проект кучей экземпляров, т.к. таких преобразований для заполнения массива достаточно много

Присоединяюсь, какой смысл вообще создавать блок, расклад на байты в полне может выполнить функция

S.A.D.
08.02.2013, 11:12
Никаких коллизий нет и не может быть для указанного способа использования если только не намутили внутри ФБ.Что там делает внутри Ваш ФБ - только Вы и знаете.
Для описанной задачи внутренность ФБ - это 2-4 строчки. Как там можно намутить ? :)

так вот и я думаю что ничего особого там нет и расчитывается за один проход. Как можно было догадаться это кусочек из реализации modbus(slave). Просто когда я тем же пресловутым лектусом записываю первые четыре из приведенных элементов массива, значение вторых тоже "задевает". Кстати "глюк" подобный наблюдается и в массиве Input_registers

S.A.D.
08.02.2013, 11:15
capzap,
так функция же возвращает только одно единственное значение. В обратном преобразовании я использую как раз функцию.
или вы предлагаете сделать функцию, которая будет выделять из REAL переменной конкретный указаный байт?

maximov2009
08.02.2013, 11:16
Добрый день. Может кто подскажет кусочек программы для ПР 110 управления реверсивным счётчиком от 2 датчиков, с определением направления движения в + или -

zaur
08.02.2013, 12:00
Здравствуйте. Заранее извиняюсь за глупый вопрос. Есть ли в библиотеке oscat ФБ для перевода 16-й ASCII формы в формат чисел? То есть в строке получаю что-то типа Е069. Использую блок и на выходе получаю реальное значение.

Валенок
08.02.2013, 12:55
capzap,
так функция же возвращает только одно единственное значение. В обратном преобразовании я использую как раз функцию.
или вы предлагаете сделать функцию, которая будет выделять из REAL переменной конкретный указаный байт?

Думаю capzap не обидицца

1.Функция может вернуть массив из 4 байт
2.Функция может сама положить байты по нужному адресу

Ну и много чего она может если не быть в плену иллюзий. Например в фунции может быть VAR_IN_OUT

А глюк - в логике пользовательской проги.

capzap
08.02.2013, 13:48
capzap,
так функция же возвращает только одно единственное значение. В обратном преобразовании я использую как раз функцию.
или вы предлагаете сделать функцию, которая будет выделять из REAL переменной конкретный указаный байт?

Функция может вернуть и структуру из четырех байт и правильно перевернутый реал если что
Зы с телефона выхожу за меня уже ответили достаточно подробно

S.A.D.
08.02.2013, 14:12
Валенок,
capzap,
большое спасибо за разъяснения. думаю косяк действительно где-то в коде. Одно подозрительное место пофиксил, тестирую, но оно поидее не должно никак влиять. Вобщем буду дальше ковыряться в том что понаписал))) К сожалению у меня ещё фактор качества GPRS соединения вмешивается. Вобщем будем шлифовать)

Валенок
08.02.2013, 21:16
function h_to_dw : dword
var_input
str : string;
end_var

h_to_dw:=string_to_dword(concat('16#',str));

А из двоичного в десятичный нада ? :) Недорого отдам

Валенок
08.02.2013, 21:26
Добрый день. Может кто подскажет кусочек программы для ПР 110 управления реверсивным счётчиком от 2 датчиков, с определением направления движения в + или -
Понимаете - rovki (http://www.owen.ru/forum/forumdisplay.php?f=34) побъёт

a_sergeevich
09.02.2013, 11:30
Здравствуйте. Подскажите, вот у меня есть проект, но он делался для ПЛК-154, теперь его надо перенести на ПЛК-150, как это можно сделать не переписывая всю программу ? Можно ли в проекте где-нибудь поменять тип ПЛК ?

capzap
09.02.2013, 14:22
Здравствуйте. Подскажите, вот у меня есть проект, но он делался для ПЛК-154, теперь его надо перенести на ПЛК-150, как это можно сделать не переписывая всю программу ? Можно ли в проекте где-нибудь поменять тип ПЛК ?

Конфигурацию менять все равно придется, а программу можно экспортом перенести

a_sergeevich
09.02.2013, 15:51
Спасибо, за ответ, по-мучавшись, переписал программу на 150-й ПЛК.
Теперь другой вопрос, может есть у кого пример опроса трм138-р по rs-485 с помощью протокола овен, а то пока нахожу только примеры с модбасом ?

Всё, вопрос снят, нашёл пример, правда не с трм138, но похожий.

zaur
11.02.2013, 11:15
function h_to_dw : dword
var_input
str : string;
end_var

h_to_dw:=string_to_dword(concat('16#',str));

А из двоичного в десятичный нада ? :) Недорого отдам

Спасибо, конечно. Но писал второпях и уже на ходу, поэтому в корне неверно обрисовал ситуацию. Прошу прощения за свою глупость.
У меня есть строка например с кодом Е069. Мне надо подучить реальное значения. В строке дополнительный код, то бишь реальное значение будет -8087. Затем уже его буду обрабатывать как мне надо. Вот сейчас пишу алгоритм переработки из HEX дополнительного в реальное значение (то есть как раз из Е069 получаю -8087).
Моя реализация получается какая-то кривоватая. Поэтому и думаю может в oscat есть более красивая реализация.

Валенок
11.02.2013, 14:17
Вы не поверите:

function h_to_i : int
var_input
str : string;
end_var

h_to_i:=string_to_int(concat('16#',str));

S.A.D.
11.02.2013, 14:46
прошу прощения за вопрос на который наверняка есть ответ. Однако задаю его, потому как не смог найти этот самый ответ. Нужно по пропаданию питания , старту программы, возобновлению питания производить некоторое действие. Собственно как идентифицировать эти моменты? В конфигураторе задач в системных событиях есть start и stop, однако как я понимаю они мне не помогут.

capzap
11.02.2013, 16:01
прошу прощения за вопрос на который наверняка есть ответ. Однако задаю его, потому как не смог найти этот самый ответ. Нужно по пропаданию питания , старту программы, возобновлению питания производить некоторое действие. Собственно как идентифицировать эти моменты? В конфигураторе задач в системных событиях есть start и stop, однако как я понимаю они мне не помогут.

Есть еще пресловутый модуль статистики, там есть маркер наличия питания

a_sergeevich
11.02.2013, 20:31
Уважаемые специалисты, подскажите пожалуйста, я вот тут отрабатываю пример по работе с протоколом ОВЕН, т.е пытаюсь считать и записать параметры в ТРМ201, так вот, проблема в том, что запись параметра SP-уставка, проходит чётко, а вот считывание параметра PV или LuPV, я их переодически менял, не происходит, т.е значение всё время равно 0. Светодиод RS на приборе моргает. Я тут также бился с тем, чтобы считать значение температуры из ТРМ138, но его я победил и параметр начал считыватся правда после перезагрузки ТРМ138 путём отключения и затем включения питания, только тогда все изменения вступили в силу. Но с ТРМ138 теперь другая проблема, считаная температура отображается в виде такого вот числа 2.2913396е+008, оно конечно меняется вместе с температурой, так вот, как его преобразовать в нормальные показания температуры ?
Пожалуйста сильно не ругайтесь если вопросы тупые, я только начинаю с ПЛК осваиваться.Оба проекта прилагаю.
Мучаю ПЛК-150-U-L версия таргет-файла 2.11

Всё с ТРМ201 разобрался, сделал через конфигурацию и всё заработало, хотя остаётся вопрос почему не работало через программу. С преобразованием показаний с ТРМ138 вопрос открыт :)

Что-то я опять ничего не понимаю, через конфигурацию считывается только один параметр - это PV, при попытке считать SP всё стопорится, также не пойму как через конфигурацию, записать значение уставки ? Короче засада какая-то через конфигурацию нормально считывается значение PV-температура, но не знаю как записать уставку SP ( пытался присвоить переменной на запись в конфигурации имя и через него записать уставку, ноль эмоций ) через программу чётко записывается уставка SP, но вот PV не читается, при попытке скомбинировать эти два способа температура перестаёт считыватся как только нажимаем старт, при этом уставка пишется нормально. Кстати всё беру из примеров, но то ли примеры не рабочие, то ли я что-то не то делаю. Помогите.
Проект с опросом трм201 конфигурацией тоже прилагаю.
Да, ещё, когда комбинирую, считывание PV через конфигурацию, а запись через программу, на ТРМ-е цифры на индикаторах моргать начинают, короче жесть :)

a_sergeevich
12.02.2013, 16:39
Уважаемые, специалисты этого форума, пожалуйста, помогите мне в вопросе, который выше или хотя бы направте в нужном направлении, я уже всю голову сломал, но так и не пойму, что я делаю не так.

Николаев Андрей
12.02.2013, 16:43
На форуме в разделе "Примеры программ и полезности" есть готовые примеры опроса ТРМ201 и ТРМ138

a_sergeevich
12.02.2013, 17:28
Так в том то и дело, что я беру готовый пример опроса трм201 переписываю его под свой ПЛК и он не работает, вернее работает на половину, т.е блок записи работает, а вот значение тем-ры не считывает.
По ТРМ138, там только пример с модбасом, а мой трм138 его не поддерживает, я же всё написал, описал проблемы.
С трм138 вроде как тем-ра считывается, но в виде числа, типа 2.345674е+008, и я просто спросил, как его переконвертировать в показания температуры ?

a_sergeevich
12.02.2013, 18:19
С опросом трм201 через конфигурацию наконец-то добился результата, теперь я могу считывать значение температуры, уставку, а так же записывать уставку. Всё это работает только в том случае если в описаниии переменных для считывания уставки и записи уставки поставить параметр использовать индекс в значение Yes, также изменил значения Max response dalay на 100 ms и Framing time на 50 ms. При установке параметра, использовать индекс, в переменных считывания и записи уставки в No, считывается только значение температуры т.е параметр Pv. Считывания уставки и записи не происходит и висит ошибка Last error 12631.
Скажите так и должно быть ?
ПЛК-150_U-L
Bin.ver. 2.12.7
Target 2.10

На этот вопрос сам нашёл ответ, начав шерстить весь форум с 2007 года, ответ прост до безобразия, оказывается в старых трм201 и 101 для таких параметров как sp требовалась индексация. Я вот только не понимаю, почему такие вещи нельзя объединить в какой-нибудь теме, где описать такие вот нюансы в зависимости от прошивки прибора. Max response dalay и Framing time похоже вообще не при делах, хотя у человека из-за этих параметров нестабильно опрашивался трм101.
С подводными камнями приборов трм201 со старой прошивкой при опросе через конфигурацию разобрался, теперь осталось разобратся с работой таких приборов при их опросе программным способом, проблемы с которыми я столкнулся описал выше, может специалисты подскажут куда копать ?
И ещё вопрос, а может не стоит заморачиваться с программным способом и делать всё через конфигурацию или есть моменты где через конфигурацию не получится сделать опрос и поможет только программный способ ? Но разобраться всё же надо, почему программный опрос, трм201 со старой прошивкой, из примера, не работает как надо.
Файл проекта опроса трм201 через конф-цию прилагаю.

a_sergeevich
13.02.2013, 18:10
Всё, со всеми нюансами с опросом трм201 разобрался, всё дело в индексации параметров в старых версия прошивки этих приборов. Теперь всё опрашивается и пишется как программным способом, так и через конфигурацию.

cer_cer
13.02.2013, 19:36
Здравствуйте. Нигде не могу найти примера кода отсылки и приёма 1го пакета (фрейма) в сеть Ethernet по протоколу UDP с использованием библиотеки SysLibSockets.lib. Помогите чем-нибудь кто может.

a_sergeevich
13.02.2013, 20:10
Может кто-нибудь скинет пример опроса трм138 по протоколу ОВЕН программно и через конфигурацию, надо считать всего лишь температуру с 4-го входа. У меня уже всё чаще возникает желание раздолбать данный прибор. Прошу помогите, спасите жизнь прибору :)

a_sergeevich
13.02.2013, 20:53
Уважаемые, специалисты, посмотрите, что у меня не так с опросом трм138 ?
Сделал скрин работы программы опроса и на нём видно в каком виде отображается температура, это правильно или нет, если да то как её привести в читаемый вид ?

win2014
13.02.2013, 23:04
Подскажите пожалуйста. В ПЛК100 соединил вход и выход. В визуализации создал кнопку.В конфигурации элемента\ввод\переменная кнопка -задал значение входа. Нажимаю на кнопку. В контроллере должен включится выход,этого не произошло. В режиме эмуляции все работает. Я зык CFC. Как сделать так чтобы включался выход в контроллере?

Николаев Андрей
14.02.2013, 10:10
Скорее всего нажать кнопку старт (run).
Ну и нигде не увидел где Вы что-либо выходу присваиваете. Вы только про вход написали...

win2014
14.02.2013, 16:08
Скорее всего нажать кнопку старт (run).
Ну и нигде не увидел где Вы что-либо выходу присваиваете. Вы только про вход написали...

Кнопка run нажата. В соединил вход с выходом.В конфигураторе ПЛК входу присвоил I1, выходу Q1.

Николаев Андрей
14.02.2013, 16:31
выкладывайте проект.
Галочка эмуляция снята?
Переменные I1 и Q1 в программе не объявляли?

Dom13
14.02.2013, 17:07
можно ли например окно визуализации вынести, то есть сделать его отдельным, а не дочерним главного окна, что бы развернуть на весь экран на втором мониторе?

a_sergeevich
14.02.2013, 18:09
Я так понимаю мне никто не поможет. Может я не там спрашиваю, так вы скажите или перенесите мои вопросы в правильную тему.

win2014
14.02.2013, 21:13
выкладывайте проект.
Галочка эмуляция снята?
Переменные I1 и Q1 в программе не объявляли?
Галочка эмуляция снята.
Переменные I1 и Q1 в программе объявил.

Николаев Андрей
15.02.2013, 11:50
В визуализации галочку одну снимите... либо кнопка либо переключатель.
Так все правильно.

AV_P
18.02.2013, 11:33
Кооллеги, прошу подсказать правильное техническое решение.
Имеем: удаленный ПЛК110 с настроенным ModBus-Slave соединением по TCP для вывода параметров
в систему диспетчеризации (на верхний уровень).
Подключение к Интернет - через ADSL-модем с выделенным статическим IP-адресом. Это то, что уже работает.
Требуется: Подключаться OnLine к ПЛК из среды CoDeSys для корректировки ПО.
Вопрос: Как правильно организовать такую коммуникацию?
Спасибо.

capzap
18.02.2013, 11:40
Кооллеги, прошу подсказать правильное техническое решение.
Имеем: удаленный ПЛК110 с настроенным ModBus-Slave соединением по TCP для вывода параметров
в систему диспетчеризации (на верхний уровень).
Подключение к Интернет - через ADSL-модем с выделенным статическим IP-адресом. Это то, что уже работает.
Требуется: Подключаться OnLine к ПЛК из среды CoDeSys для корректировки ПО.
Вопрос: Как правильно организовать такую коммуникацию?
Спасибо.

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

S.A.D.
19.02.2013, 12:20
вынужден просить помощи, ибо в поиске ничего конкретного найти не смог. Нужно из программы корректировать системное время ПЛК. Извлечь его посредством SysLibTime не проблема, однако, как утверждает описание библиотеки, она предназначена только для чтения. Можно ли как-то корректировать системное время ПЛК из пользовательской программы?

drvlas
19.02.2013, 13:37
Имеем: удаленный ПЛК110 с настроенным ModBus-Slave соединением по TCP для вывода параметров
в систему диспетчеризации (на верхний уровень).
Подключение к Интернет - через ADSL-модем с выделенным статическим IP-адресом. Это то, что уже работает.
Требуется: Подключаться OnLine к ПЛК из среды CoDeSys для корректировки ПОСтранно, что не отвечают знатоки. Отвечу я, хотя у меня это получилось без должного понимания нюансов - просто сделал под наркозом, а оно работает.

Итак, у тебя есть внешний IP-адрес, за которым спрятался ПЛК. Именно этот адрес нужно указать КоДеСису в настройках ОНЛАЙН-подключения. То есть, создать новое, выбрать (для меня совершенно неочевидный, но так надо) TCP/IP (Level2) и там дать этот твой статический IP.
И тут же выбрать порт из свободных, например, 29001.
Все, КоДеСис настроили.
Теперь осталось на приемной стороне указать маршрутизатору (или кто там может перенаправить) проброс порта 29001 на 1200 при внешнем запросе.
И будет ЩАСТЯ :)

Мы так делали даже через 3G USB-свисток. Подключали его выход к рутеру, там прописывали чего надо - и получали возможность перезаливать программу без использования локальной Етернет-сети. Иногда это очень удобно.

drvlas
19.02.2013, 13:46
системное время ПЛК. Извлечь его посредством SysLibTime не проблема, однако, как утверждает описание библиотеки, она предназначена только для чтения. Можно ли как-то корректировать системное время ПЛК из пользовательской программы?Странно, как же тогда задать начальное или скорректировать?

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

8067

Сначала я читаю время, а потом, если там меньше 2011 года, то задаю время. Все работало...

S.A.D.
19.02.2013, 14:01
Странно, как же тогда задать начальное или скорректировать?

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

8067

Сначала я читаю время, а потом, если там меньше 2011 года, то задаю время. Все работало...
спасибо. Ларчик просто открывался))

Mifisok
20.02.2013, 18:55
Здравствуйте! Только недавно начал разбираться с CoDeSys и естественно есть непонятные моменты.
В наличии имеется ПЛК-150-220-И-М. Таргеты поставил, с дискретными входами вопросов не возникало, а вот уже с аналоговыми пошли трудности. Задача заключается в том, что бы на каждый аналоговый вход, будет цепляться отдельный термопреобразователь сопротивления (ТСМ-0196-02), которые будут определять температуру в 4 местах. В конфигурациях ПЛК интервалы температур я выставил и выбрал тип IT_4_20. Точки пока не выставлял, т.к. не подключал ещё сам ПЛК к компьютеру. Интересует как реализовать, что бы программа понимала какая температура на каждом ТСМ`е ? Я так понимаю там должны использоваться всякие операторы преобразований.

Валенок
20.02.2013, 21:30
будет цепляться отдельный термопреобразователь сопротивления (ТСМ-0196-02), которые будут определять температуру в 4 местах..... и выбрал тип IT_4_20. .
??


.. Интересует как реализовать, что бы программа понимала какая температура на каждом ТСМ`е ?.
Наверное имя дать

Николаев Андрей
21.02.2013, 10:42
Почитайте руководство пользователя на контроллер. Получите большинство ответов.
Например, что в ПЛК можно выбрать градуировку термосопротивления и получать уже температуру.

S.A.D.
27.02.2013, 18:30
Кто-нибудь пробовал соединять ПЛК между собой по 232-debug? Дело в том что надо, обжал кабель перекрестный без перемычки, подключаю - обмена нет. Протокол Modbus.

Aleksey9952
28.02.2013, 10:46
Чет у меня ни как не получается связать МДВВ и ПЛК110-30, мне нужны только выхода, из индикаторов горит питание и моргает RS-485, по настройкам все прочел по 5 раз, но выхода так и не работают, может сможете точный пример скинуть???

Николаев Андрей
28.02.2013, 13:53
http://www.owen.ru/forum/showthread.php?t=13580

kosmas
02.03.2013, 13:22
Что-то меня малость клинит.. Есть такая штука - http://www.3sd-monitoring.ru/equipment/converter-1wire-rs485.
Прицепил к ней 2 датчика, через АС-4 я ее сконфигурировал - все работает. Прицепил к ПЛК-110-60 к RS-485-2. И что-то я недопонимаю, как получить оттуда данные...
Адрес девайса в модбусе - 3.

Проект прикладываю... Может, там нужен не regiter input modele?

жекон
02.03.2013, 19:06
У Вас скорость обмена выставлена 115200 ,а там максимум 38400 и тип данных
Параметр температуры:
Signed Int (целое со
знаком)&#215;100
Пример: 6500(0x1964)=65.00°C
-2000(0хF830) = -20.00 не много не соответствует 8148

kosmas
02.03.2013, 19:31
У Вас скорость обмена выставлена 115200 ,а там максимум 38400 и тип данных не много не соответствует 8148

Блин... Действительно скорость проморгал... :(

Все, спасибо, все отлично работает!

T01:= WORD_TO_REAL(TEMP01)/100;
- рулит! :)

FAIRHAD88
03.03.2013, 22:40
Доброго времени суток!
Подскажите, как можно преобразовать значение датчика ДТС105.РТ100.В3
в программной среде, так как значение это десятизначное число, а мне нужно в С. пробовал сам подобрать, но из-за неравномерности в изменении сопротивления от температуры получается косо. У меня ПЛК 110-60 и МВ110-8А. В конфигураторе МВ110-8А температура отображается правильно, в разделе CoDeSys конфигуратора ПЛК тоже в С. Может, кто то уже решил данную проблему прощу помочь!

capzap
04.03.2013, 00:17
Доброго времени суток!
Подскажите, как можно преобразовать значение датчика ДТС105.РТ100.В3
в программной среде, так как значение это десятизначное число, а мне нужно в С. пробовал сам подобрать, но из-за неравномерности в изменении сопротивления от температуры получается косо. У меня ПЛК 110-60 и МВ110-8А. В конфигураторе МВ110-8А температура отображается правильно, в разделе CoDeSys конфигуратора ПЛК тоже в С. Может, кто то уже решил данную проблему прощу помочь!

Ну если в конфигураторе отображается правильно, то либо в программе Вы смотрите не на ту переменную, либо сами преобразовали в не соответствующий тип и теперь удивляетесь. В программе переменная должна быть типа Реал

mc_
04.03.2013, 13:39
Как выводить русский шрифт в визуализацию codesys?

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

Пользователи инглиш не осилят (они б русский хотя бы осилили).

S.A.D.
04.03.2013, 17:43
подклюючил 2 плк100 между собой через 232debug. протокол modbus rtu. Обмен идет. но данные не меняются в ПЛК-мастере и модуль модбаса выставляет ошибку 81. Хотя обмен данными идет и по виду посылок, они правильные. По обычному 232 такой беды нет, но он нужен под другое устройство((

FAIRHAD88
04.03.2013, 21:12
Ну если в конфигураторе отображается правильно, то либо в программе Вы смотрите не на ту переменную, либо сами преобразовали в не соответствующий тип и теперь удивляетесь. В программе переменная должна быть типа Реал

переменные типа реал при запуске проекта значение входа отображаеться во в таком формате 1106109542 как преоброзовать такое значение в С.
пробовал расчитать на сколь изменяеться данное число взависимости от температуры получаеться косо. Может вы что подскажите.

drvlas
04.03.2013, 21:41
переменные типа реал при запуске проекта значение входа отображаеться во в таком формате 1106109542 как преоброзовать такое значение в С.Ну, на калькуляторе (http://www.binaryconvert.com/result_float.html?hexadecimal=41EDE466) преобразуем его в длинное 16-ричное число 41EDE466, потом загоним его в преобразователь во флоат - получим 2.9736522674560546875E1. Похоже, что у тебя там 29 градусов?

А суть проблемы не понятна. Где, что отображается... Не ленись хотя бы спрашивать.

FAIRHAD88
04.03.2013, 22:04
Ну, на калькуляторе (http://www.binaryconvert.com/result_float.html?hexadecimal=41EDE466) преобразуем его в длинное 16-ричное число 41EDE466, потом загоним его в преобразователь во флоат - получим 2.9736522674560546875E1. Похоже, что у тебя там 29 градусов?

А суть проблемы не понятна. Где, что отображается... Не ленись хотя бы спрашивать.

спасибо за совет сейчас буду продовать сделать это в теле программы

drvlas
04.03.2013, 22:08
сейчас буду продовать сделать это в теле программыНу, пробуй. Спросил бы точнее, мож меньше бы пробовать пришлось бы :)
Например, есть операции преобразования типов. А есть пойнтеры, которыми много чего можно наваять. Например, можно просто правильно трактовать ту двоичную "кашу", которая уже еть в программе.

FAIRHAD88
04.03.2013, 22:14
а поконкретней можеш подсказать я в только начинающий это мой первый проект как это в ST сделать по адекватней и кстате по правильная цифра вышла

drvlas
04.03.2013, 22:20
и кстате по правильная цифра вышлаВот ты сам можешь понять, чьо написал, дружище? Правильная или нет?
"Можешь не отвечать. Потом скажешь. Сюрприз будет" :)

Да я бы помог. Лежу, хвораю, мышку гоняю. Но ты же спросил... как козел в воду. Я, честно, просто не понимаю, что там где не так. Вот, сейчас готов сидеть и морщить лоб. Но ты РАССКАЖИ толком. Ок?

FAIRHAD88
04.03.2013, 22:27
мне надо вот это 10 значное преобразовать в С сделать это нужно в самом тексте программы программа на ST нужно это чтобы работать с этими даными можно было в идеале нужно получить 3 значное int число в котором первые два знака это целое значение градуса а третий это значение десятичной части вычесленного числа. Так пойдет?)

drvlas
04.03.2013, 22:53
Это 10-значное - где оно? Как оно объявлено? Это переменная, верно? Всякая переменная как-то объявлена.

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

Например, вот я могу сказать, что у меня в области ввода-вывода есть переменная wipScrNum - и тип ее есть WORD:8174

FAIRHAD88
04.03.2013, 22:57
переменная объявлена в самом тексте в конфигураци не объявлял
объявленна как
proda_dat: REAL;
значение присваевается так
proda_dat:=%ID6.1.0.0;

drvlas
04.03.2013, 23:02
покажи ID6.1.0.0 в своей конфигурации, партизан!
И как ты смотришь значение?

FAIRHAD88
04.03.2013, 23:08
могу в личьку кинуть не хочет чет опера скрин вставлять а значеие считываю очень просто во флот32 просто адрес регистра проставил 0004

drvlas
04.03.2013, 23:14
"За старательность 5, за внимательность 2", как в анекдоте про морг.

1) Просто посмотри, что у тебя написано после двоеточия в конфигураторе
ID6.1.0.0: ???

2) Я спросил, чем смотришь значение переменной (proda_dat)

FAIRHAD88
04.03.2013, 23:18
ID6.1.0.0: REAL
пока не чем просто при запуске проекта в разделе объявлений

drvlas
04.03.2013, 23:30
Значит, ты создал в конфигураторе связь ПЛК и МВВ. Там есть переменная типа REAL, которую ты получаешь из МВВ. Ее значение ты видишь в онлайне?
Потом ты присваиваешь это значение другой переменной. Тоже REAL. И его должен видеть - как в области объявления, так и в теле программы, где сам оператор присоваивания. Так? И все эти значения совпадают и не равны ожидаемым 29 градусам. Так?
А где и как ты видишь 29 градусов?

Постарайся отвечать на все вопросы, а не только на последний

FAIRHAD88
04.03.2013, 23:44
да я связь есть переменную входу я не присваивал но да у него тип реал читаю значение этого входа через битовую адресацию уже в самом теле программы приравнивая переменную ко входу и вот эти значения и есть 10 значные
а 29 градусов отображаються а конфигураторе ПЛК в онлайне напротив адреса входа просто в я настройках Real input module во вкладке параметры модуля поставил адрес регистра 0004 вот в данном случае отображаеться температура в С

drvlas
04.03.2013, 23:56
а 29 градусов отображаються а конфигураторе ПЛК в онлайне напротив адреса входаНу так за время нашего здесь трепа уже 100500 раз можно было и имя переменной присвоить, и фотки научиться выкладывать...
Давай все же проект. Надо смотреть, что там не так. Если проект большой - тем лучше. Отрежь из него вот этот самый минимум - конфигурация и присвоение. И запусти. Если там и так ничего больше - выкладывай все

capzap
04.03.2013, 23:56
да я связь есть переменную входу я не присваивал но да у него тип реал читаю значение этого входа через битовую адресацию уже в самом теле программы приравнивая переменную ко входу и вот эти значения и есть 10 значные
а 29 градусов отображаються а конфигураторе ПЛК в онлайне напротив адреса входа просто в я настройках Real input module во вкладке параметры модуля поставил адрес регистра 0004 вот в данном случае отображаеться температура в С

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

FAIRHAD88
05.03.2013, 00:05
присвоеие имени ни чего не меняет пробовал...

drvlas
05.03.2013, 00:13
Не могу сейчас ставить ПЛК110. Не увижу твоей конфигурации. Тренируйся на фото.
Нужно фото конфигуратора (области ввода-вывода), а также фото во время отладки - как конфигуратора, так и программы.
Что там не клеится со скриншотом? В чем затык?

FAIRHAD88
05.03.2013, 00:16
А что за документация в руководстве пользователя мало что сказано только перечень параметров которые можно настроить только вот они все заблокированы по факту... может какую другую литературу подскажите?

FAIRHAD88
05.03.2013, 00:19
да бох его знает не хочет в ставлять как и нет его нахожу файл выбираю и все не добавляет ни ошибку ни че могу а мыло скинуть через почту нормально идет

drvlas
05.03.2013, 00:27
Ну, проект посмотрел. Ничего особенного не вижу. Тут самый интерес, верно ли ты нам рассказываешь о поведении программы. Потому как регистр номер 4 - нормально, лишь бы слейв это знал. Обращение по прямому адресу - не криминал. Ничего стороннего тоже не видно.

FAIRHAD88
05.03.2013, 00:31
так со скрином разобрался

FAIRHAD88
05.03.2013, 00:33
а это уже запушенный

capzap
05.03.2013, 00:42
попробуйте Ваш набор с процентом "обуть" в преобразование дворд то реал, может чего получится, а вообще в конфигураторе надо имена присваивать, чтоб не терять попусту время

FAIRHAD88
05.03.2013, 00:48
Я правильно вас понял?

drvlas
05.03.2013, 00:53
Там есть интересный момент, который наш друг чуть не выплеснул. Но на фото "до запуска" уцелело значение, которое КДС "видит" в переменной %ID6.1.0.0

8181

С удивлением вижу, что здесь его значение трактуется, как банальное целое. Причем, его двичное представление ТОЧНО равно вот тем самым 23,74 градусам (похолодало, пока мы здесь кипим). То есть, никакой путаницы с адресом нет. А вот с типом данных чичтема что-то сплоховала. Или мы мало знаем.
Лично я никогда не гоняю по интерфейсам флоаты. Так что причину сказать не могу. Если система трактует объявленное вещественное, как целое, какие уж тут дела.
Конечно, можно вывернуться. Пойнтеры - вот наш ответ. Но это именно что через жопу.
Завтра модераторы хорошо почистят эту ветку. Мы здесь нагадили. А все потому, что некоторые ленятся вопрос пространно задать, да картинок наделать :)

drvlas
05.03.2013, 01:19
Зы должно хватить простого преобразования, без указателейДа вот, сегоднят день такой, бездельный. Я запустил проект - и с указателями. Вот как выглядит:
8182

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

capzap
05.03.2013, 01:22
дико извиняюсь, господа бездельники, а может тупо надо F5 нажать :)

drvlas
05.03.2013, 01:26
дико извиняюсь, господа бездельники, а может тупо надо F5 нажать :)Так смотри - у меня же нажато. И результат есть. Я думал, уже все ясно. Равно как и то, что твой путь не прокатил. Это же видно на скриншоте автора вопроса.

Кстати, можно минимизировать вот так:

8183

Результат так же хорош :)

drvlas
05.03.2013, 01:37
Бугага! А вот такой вариант тоже катит:

8184

И я теперь в ступоре.. Почему исходное не работало? Щас восстановлю сырец...

drvlas
05.03.2013, 01:50
Краткое резюме. Достаточно заменить абсолютный адрес на имя - и исходный проект работает. Почему для этого нужно, чтобы были имя - хз. Пусть на это ответят знатоки теории.

Итак, вот минимальная правка к проекту автора вопроса, что б ему сладко спалось сегодня:
8185

Вот результа работы в симуляторе:
8186

Как видим, ничего с пойнтерами и не нужно делать. Хотя все равно пойнтеры - сила :)

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

mc_
05.03.2013, 10:23
Можно ли как-то с контроллера (ПЛК63) отслеживать, влючен ли соединенный с ним ПК? Именно в автоматическом режиме, без необходимости регулярно что-то нажимать.

На ПК крутится CoDeSys HMI, других средств не предвидится.

Николаев Андрей
05.03.2013, 10:52
ПЛК63 не сможет Вам дать CoDeSys HMI. Он в нем не заработает.

FAIRHAD88
05.03.2013, 20:42
Краткое резюме. Достаточно заменить абсолютный адрес на имя - и исходный проект работает. Почему для этого нужно, чтобы были имя - хз. Пусть на это ответят знатоки теории.

Итак, вот минимальная правка к проекту автора вопроса, что б ему сладко спалось сегодня:
8185

Вот результа работы в симуляторе:
8186

Как видим, ничего с пойнтерами и не нужно делать. Хотя все равно пойнтеры - сила :)

Прошу прощения у модераторов за разведенный здесь долгий и малополезный с... э... спор.
Коллеги большое спасибо за помощь !

drvlas
05.03.2013, 20:46
"Спасибо" в стакан не нальешь :) Ты бы хоть сказал, получилось ли? Ведь был постинг с утерждением. что использование имени "не помогло". Вот это меня и беспокоит. Хотя не очень :)

kosmas
09.03.2013, 18:22
У Вас скорость обмена выставлена 115200 ,а там максимум 38400 и тип данных не много не соответствует 8148

Приехали... Если мерить положительную температуру - все просто. А вот отрицательную - то получается 632.45 - классический "переход через ноль"... Пока решил


IF TEMP > 32300 THEN
Temperature := (655.35-(REAL_TO_WORD(TEMP))*-1;
END_IF

Может, есть какой более простой способ?

Gans
09.03.2013, 19:45
Здравствуйте, kosmas.

Приехали... Если мерить положительную температуру - все просто. А вот отрицательную - то получается 632.45 - классический "переход через ноль"... Пока решил

Может, есть какой более простой способ?

Попробуйте функцию - real_to_int и если не лень то предварительно температуру ограничьте до +-32 тысячи :-)

kosmas
09.03.2013, 20:37
Здравствуйте, kosmas.
Попробуйте функцию - real_to_int и если не лень то предварительно температуру ограничьте до +-32 тысячи :-)

Прошу прощения, обманул... Плохо спрашивать вдали от текста..
На самом деле я написал такое:



FUNCTION Temperatur : REAL
VAR_INPUT
Temper_W: WORD;
END_VAR
====================================
IF Temper_W > 32767 THEN
Temperatur := -1*(655.35 - WORD_TO_REAL(Temper_W)/100);
ELSIF Temper_W < 32767 THEN
Temperatur := WORD_TO_REAL(Temper_W)/100;
ELSE
Temperatur := 327.67;
END_IF


Волшебная цифра 327.67 - это значит, что датчик отвалился...

Оно работает, но что-то мне это не очень нравится...

Да, и как REAL округлить до двух знаков после запятой?

Yegor
10.03.2013, 15:31
Приехали... Если мерить положительную температуру - все просто. А вот отрицательную - то получается 632.45 - классический "переход через ноль"Нету никакого перехода. Он вам приснился. Пробуйте так:
PROGRAM PLC_PRG
VAR
TMP: REAL;
END_VAR

TMP := INT_TO_REAL(WORD_TO_INT(TEMP01)) / 100.0;

kosmas
10.03.2013, 21:25
Нету никакого перехода. Он вам приснился. Пробуйте так:
PROGRAM PLC_PRG
VAR
TMP: REAL;
END_VAR

TMP := INT_TO_REAL(WORD_TO_INT(TEMP01)) / 100.0;

Это великое колдунство... Прилетает 64624, в итоге получается -9.12 .

Однако 65535 - 64624 = 911/100 = 9.11.

В общем, ответа сходу в хелпе не нашел. Требую объяснений про WORD_TO_INT... Или ссылки...

kosmas
10.03.2013, 22:13
Тип Нижний предел Верхний предел Размер памяти
WORD 0 65535 16 Бит
INT -32768 32767 16 Бит


Т.е. я догадываюсь, что рамерность у WORD и INT одинаковая. То, что 0 в WORD это 0 в INT - тоже.
Но то, что 32768 в WORD это -32768 в INT я и представить не мог... :confused:

capzap
10.03.2013, 23:09
Тип Нижний предел Верхний предел Размер памяти
WORD 0 65535 16 Бит
INT -32768 32767 16 Бит


Т.е. я догадываюсь, что рамерность у WORD и INT одинаковая. То, что 0 в WORD это 0 в INT - тоже.
Но то, что 32768 в WORD это -32768 в INT я и представить не мог... :confused:

http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf
10.14 Элементарные типы данных

Yegor
11.03.2013, 05:58
Требую объяснений про WORD_TO_INTWORD_TO_INT не делает ничего кроме копирования нулей и единичек на новое место. Т.к. в документации к прибору сказано, что он отдаёт знаковое 16-битное, а в конфигурации ПЛК может быть только беззнаковое 16-битное, то WORD_TO_INT это то, что вам нужно. Чтобы понять суть, погуглите где-нибудь про двоичное представление знаковых и беззнаковых целочисленных типов. Это школьный уровень.

petera
11.03.2013, 09:26
Да, и как REAL округлить до двух знаков после запятой?
Есть замечательная библиотека OSCAT и в ней функция ROUND

FUNCTION ROUND : REAL
VAR_INPUT
in : REAL;
N : INT;
END_VAR
VAR
DECADES : ARRAY[0..8] OF REAL := 1.0,10.0,100.0,1000.0,10000.0,10000.0,100000.0,100 0000.0,10000000.0;
X: REAL;
END_VAR
X := DECADES[LIMIT(0,N,8)];
ROUND := DINT_TO_REAL(REAL_TO_DINT(in * X)) / X;

kosmas
11.03.2013, 21:59
Ну, и чтобы добить тему....


http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf
10.14 Элементарные типы данных
"Читал пейджер, много думал"... (с) Новый русский.

Про элементарные типы читал. А вот что делает WORD_TO_INT - не нашел.

Да, а чем отличаются WORD и UINT ?



WORD_TO_INT не делает ничего кроме копирования нулей и единичек на новое место. Т.к. в документации к прибору сказано, что он отдаёт знаковое 16-битное, а в конфигурации ПЛК может быть только беззнаковое 16-битное, то WORD_TO_INT это то, что вам нужно. Чтобы понять суть, погуглите где-нибудь про двоичное представление знаковых и беззнаковых целочисленных типов. Это школьный уровень.

Кажись разобрался. При появлении 1 в старшем разряде беззнакового целого, и интерпретировании его как знакового, просто меняется знак и уполовинивается диапазон. Там даже ничего никуда сдвигать не надо...


Есть замечательная библиотека OSCAT и в ней функция ROUND

FUNCTION ROUND : REAL
VAR_INPUT
in : REAL;
N : INT;
END_VAR
VAR
DECADES : ARRAY[0..8] OF REAL := 1.0,10.0,100.0,1000.0,10000.0,10000.0,100000.0,100 0000.0,10000000.0;
X: REAL;
END_VAR
X := DECADES[LIMIT(0,N,8)];
ROUND := DINT_TO_REAL(REAL_TO_DINT(in * X)) / X;

О! Спасибо, буду иметь в виду! :) Про OSCAT я и забыл...

amn
14.03.2013, 21:54
Здравствуйте. Есть небольшой вопрос. На форуме где-то писали, что можно обращаться к отдельным битам в словах через точку. Пробую:

var
i:int;
f:word;
end_var

f.i:=true;

Компилятор выдает ошибку
Error 4027: Integer number or symbolic constant expected

Если пишу

f.0:=true;

то все нормально, ошибок нет.

Что я упустил?

С уважением, Михаил.

drvlas
14.03.2013, 22:07
Здравствуйте. Есть небольшой вопрос. На форуме где-то писали, что можно обращаться к отдельным битам в словах через точкуНехило ты захотел, друг. То есть, я понимаю, вполне законное желание. Некоторые компиляторы такое допускают. Но что-то мне подсказывает, что здешний компилятор ждет исключительно константу в номере бита. Впрочем, он же об этом и пишет.
В общем, я так никогда не делаю.

amn
14.03.2013, 22:55
Просто увидел в посте #1253 этой ветки и захотел попробовать.

Валенок
14.03.2013, 22:59
Если же хочется по индексу к биту, то util.lib putbit/extract

capzap
14.03.2013, 23:38
Просто увидел в посте #1253 этой ветки и захотел попробовать.

А документацию нет желания перечитать, там все про это написано. Если хотите биты именами объявлять, то их надо в качестве констант объявлять

drvlas
23.03.2013, 20:43
Если же хочется по индексу к биту, то util.lib putbit/extract
Развивая эту тему, хочу вот что понять:
1) Есть ли хоть какой-то смысл в применении типа данных UDINT? Из того, что я понял, это тип. совершенно совпадающий с DWORD по представлению и диапазону значений, но, в отличие от последнего, на нем не реализуются команды битовой арифметики. Но если UDINT есть - значит он нужен? Зачем?
Это просто чтобы понимать. Чистатеоретически :)

2) Хочу уйти от DWORD к DINT. Естественно, в тех случаях, когда половины диапазона беззнакового мне вполне хватает.
Цель - уменьшение числа разных типов. Поэтому в некотором множестве переменных я хочу вообще все целочисленные переменные тупо превратить в DINT и работать с ними очень единообразно (например. я захочу их впихнуть в массив или просто хочу в операциях с ними не думать о типах).
Диапазона DINT мне хватает. Дробные (и рациональные) не интересуют. Способность ПЛК обрабатывать 32-разрядные числа так же быстро, как и 8-разрядные - вроде бы должно так быть, если процессор 32-разрядный. Ну, а если чуток не так быстро - смиримся. Здесь ведь речи идет о выгодах из единообразия, о прозрачности и удобстве отладки программ, о ее надежности, в конце концов.

Какие уже увидел подводные камешки.

Камешек А. Размер и траффик. Как только мы выползаем за пределы собственно ядра ПЛК, то размер имеет значение :) Например, запись в файл флеш-памяти... Ага, тут возрастает количество байтов. Далее. Передача по какому-нить внешнему порту. О! Траффик растет. Одно дело, передать несколько байт, другое - в 4 раза больше.
Что по этой проблеме я намерен предпринять: там, где это имеет значение, использовать копии этих длиннючих переменных. Если, скажем, по смыслу переменная есть некий индекс с диапазоном до 255, то я ее передавать буду преобразовав DINT_TO_BYTE. То есть, в программе крутится вот этот единообразный 32-разрядный монстр, а если его кудысь послать надо - я уже смотрю по месту, сколько нужно байт.
Но весь этот камушек - песчинка. Пока меня не пружит и 32-разрядные во флеш вкинуть или по модбасу пульнуть. Большее значение имеет грамотная организауия обмена, чем размер передаваемых данных...

Камешек Б. Работа с перечислениями. Насколько я понял, ENUM-ы в КДС сохраняются в виде WORD. Можно ли как-то принудительно заставить компилятор рассматривать перечисления, как элементы указанного типа (DINT, как вы догадались)?
В общем-то, я пробовал от переменной пользовательского типа отнять что-то, чтобы получилось за пределами - и ничего:


TYPE q :
(ww,ee,rr,tt,yy);
END_TYPE

VAR
diY: DINT;
Enu: q;
END_VAR

Enu := ww;
diY := Enu - 2;

Переменная diY спокойно и уверенно принимает значение -2, ка и ожидалось.
Но вот то, что Enu есть 16-разрядная переменная в моем царстве 32-х бит... Как-то смущает.

Камешек В. К переменным DINT неприменимы побитовые операции. Но битовая адресация с константным номером бита - работает. То есть, как я понимаю, diY.2 - вполне заменяет diY AND 4. Библиотечные putbit/extract работают одинаково хоть на DWORD, хоть на DINT.
Так что вроде бы и здесь DINT не проигрывает...

Ну, надо же и вопрос спросить :) Что я не учитываю? Какие действительно могут вылезти неприятности, если большая группа моих переменных (основные параметры программы, доступные оператору) будет DINT, несмотря на самый разный смысл и диапазон принимаемых значений?

drvlas
25.03.2013, 01:51
Тэк-с, попробуем вопрос покороче.

Вот скриншот из описания КДС v.2.3 на русском языке, пример доступа к битам:

8358

Вот я его миленько скопипастил в программу - и ба! КДС ругаицца! Не понимает он моей символьной константы:
8359

Или это я чой-то не понимаю? На всякий случай приаттачиваю как всегда исчерпывающее пояснение ошибки из того же описания:
8360

А мне нужно... Я в ГЛОБАЛ наваял уже много таких констант... Что ж подправить? Подскажите, плз!

capzap
25.03.2013, 07:25
Тэк-с, попробуем вопрос покороче.

Вот скриншот из описания КДС v.2.3 на русском языке, пример доступа к битам:

8358

Вот я его миленько скопипастил в программу - и ба! КДС ругаицца! Не понимает он моей символьной константы:
8359

Или это я чой-то не понимаю? На всякий случай приаттачиваю как всегда исчерпывающее пояснение ошибки из того же описания:
8360

А мне нужно... Я в ГЛОБАЛ наваял уже много таких констант... Что ж подправить? Подскажите, плз!

Вот не первый раз говорю что Вы дотошный, но вот опять что то не доконца прочитали. Трудно понять откуда Вы заскринили первую картинку, но если открыть справку самой среды разработки и добраться до раздела "доступ к битам в переменных", там красным выделено что необходимо для подобных присвоений :)

agz
25.03.2013, 10:08
День добрый! В PLC Configuration для ПЛК63-М адресное пространство modbus для 4-байтных пользовательских переменный указано 82..286, соответственно добавляя переменные FloatP и сдвигая адрес на 4 получаем 282 как последний возможный адрес, т.е. 282+4=285. Двухбайтные конфигурационные переменные начинаются с адреса 288, т.е. 286+2=288 и 286-ой адрес никак не может разместить переменную FloatP. Кстати, Лектус тоже показывает ошибку адресации, если сдвигать на 2 байта для FloatP, что вроде как логично. Не могли-бы прояснить ситуацию? Заранее благодарен.

drvlas
25.03.2013, 10:51
Трудно понять откуда Вы заскринили первую картинкуИз вполне себе официального описания КДС8361

Ищем 10 различий
8363
8362

Да, та опция "Замена констант" помогла. Спасибо!

Валенок
25.03.2013, 23:52
День добрый! В PLC Configuration для ПЛК63-М адресное пространство modbus для 4-байтных пользовательских переменный указано 82..286, соответственно добавляя переменные FloatP и сдвигая адрес на 4 получаем 282 как последний возможный адрес, т.е. 282+4=285. Двухбайтные конфигурационные переменные начинаются с адреса 288, т.е. 286+2=288 и 286-ой адрес никак не может разместить переменную FloatP. Кстати, Лектус тоже показывает ошибку адресации, если сдвигать на 2 байта для FloatP, что вроде как логично. Не могли-бы прояснить ситуацию? Заранее благодарен.
1.Адреса в регистрах а не в байтах. Курим...
2.ПЛК 63/73 не поддерживает групповых запросов за исключением парных регистров в 82..286, системной области и копии системной области (в РЭ), отсюда - сдвиг на 2 байта приведет к обращению к кускам разных флоатов, а значит вернет что-то типа "иллегал адрес"

agz
26.03.2013, 07:41
1.Адреса в регистрах а не в байтах. Курим...
2.ПЛК 63/73 не поддерживает групповых запросов за исключением парных регистров в 82..286, системной области и копии системной области (в РЭ), отсюда - сдвиг на 2 байта приведет к обращению к кускам разных флоатов, а значит вернет что-то типа "иллегал адрес"

Правильно-ли я вас понимаю?

В руководстве по прогрпммированию написано "Доступ возможен только к одному регистру (при работе с двухбайтными параметрами) или к двум регистрам (при работе с 4-х байтными параметрами)". Т.е. размер регистра = 2 байта.

Отсюда, если адрес первой переменной FloatP 82 и этот адрес ссылается на два регистра (4 байта), то следующая переменная FloatP по идее должна иметь адрес 82+4=86 и т.д. Тогда непонятно почему последний адрес 286, если он способен адресовать только двухбайтный остаток (один регистр), в который FloatP уже не влезет, т.к. область двухбайтных переменных начинается с адреса 288?

А если адрес первой переменной IntP 332, то следующая переменная IntP должна иметь адрес 332+2=334, так?

Заранее благодарен.

petera
26.03.2013, 08:55
Правильно-ли я вас понимаю?

В руководстве по прогрпммированию написано "Доступ возможен только к одному регистру (при работе с двухбайтными параметрами) или к двум регистрам (при работе с 4-х байтными параметрами)". Т.е. размер регистра = 2 байта.

Отсюда, если адрес первой переменной FloatP 82 и этот адрес ссылается на два регистра (4 байта), то следующая переменная FloatP по идее должна иметь адрес 82+4=86 и т.д. Тогда непонятно почему последний адрес 286, если он способен адресовать только двухбайтный остаток (один регистр), в который FloatP уже не влезет, т.к. область двухбайтных переменных начинается с адреса 288?

А если адрес первой переменной IntP 332, то следующая переменная IntP должна иметь адрес 332+2=334, так?

Заранее благодарен.
Ну Вам же сказали, что адресация в регистрах, а не в байтах!

следующая переменная FloatP по идее должна иметь адрес 82+4=86
следующая переменная FloatP 82+2(регистра)=84

если адрес первой переменной IntP 332, то следующая переменная IntP должна иметь адрес 332+2=334
следующая переменная IntP - 332+1(регистр)=333

FedorN
26.03.2013, 14:54
Здравствуйте, я студент 3 курса. В данное время пишу доклад на тему CoDeSys SP PLCWinNT V2.4. У меня возникли сложности по поиску информации, не затруднит ли вас ответит на некоторые вопросы?
А именно:
1) В моем докладе я изучаю виртуальный контроллер PLCWinNT, его функции и работу. Возможно ли работать с исполнительными механизмами такие как МЭО или измерительными приборами как термопара и прочее, использовав лишь PLCWinNT? То есть "превратить" наш пк в плк. При этом используя мощные пк, с операционкой win xp или win 7. Если возможно то, что для этого необходимо?

2)Система исполнения - CoDeSys SP RTE я так понимаю это отдельный софт, который непосредственно и превращает пк в плк. Когда я нажимаю Start system ничего не происходит. Что должно вообще произойти? И как вообще запустить эту программу на win 7?

4) Для чего может использоваться PLCWinNT на производстве?

3) Как вы думайте стоит ли развивать эту тему в дипломной работе, например по программированию плк фирмы "ОВЕН"?

petera
26.03.2013, 15:17
Здравствуйте, я студент 3 курса. В данное время пишу доклад на тему CoDeSys SP PLCWinNT V2.4. У меня возникли сложности по поиску информации, не затруднит ли вас ответит на некоторые вопросы?
А именно:
1) В моем докладе я изучаю виртуальный контроллер PLCWinNT, его функции и работу. Возможно ли работать с исполнительными механизмами такие как МЭО или измерительными приборами как термопара и прочее, использовав лишь PLCWinNT? То есть "превратить" наш пк в плк. При этом используя мощные пк, с операционкой win xp или win 7. Если возможно то, что для этого необходимо?

2)Система исполнения - CoDeSys SP RTE я так понимаю это отдельный софт, который непосредственно и превращает пк в плк. Когда я нажимаю Start system ничего не происходит. Что должно вообще произойти? И как вообще запустить эту программу на win 7?

4) Для чего может использоваться PLCWinNT на производстве?

3) Как вы думайте стоит ли развивать эту тему в дипломной работе, например по программированию плк фирмы "ОВЕН"?
Кодесис это не ОВЕН, хотя ОВЕН это Кодесис.
Ваши вопросы о CoDeSys SP RTE и PLCWinNT нужно задавать на официальном форуме CODESYS http://forum-ru.codesys.com/index.php

drvlas
26.03.2013, 15:28
Ваши вопросы о CoDeSys SP RTE и PLCWinNT нужно задавать на официальном форуме CODESYSПозволю не согласиться, уважаемый коллега!
1) На том форуме не так просто зарегиться - нужно корпоративный адрес. Ну, или писать админам и уговаривать.
2) Тот форум чистадохлый :) Очень мало там тусуется специалистов. Поэтому, имхо, на здешнем форуме молодой человек получит ответы быстрее. Тем более, что они не Бог весть какого высокого уровня (хотя я лично не могу ответить - ну, дык, "не шмогла, сынок, не шмогла"...)

Желаю всяческих успехов коллеге FedorN. Побольше бы нам таких студентов!