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

swerder
01.06.2012, 12:51
Fudz в разделе примеров программ ищите пример нестандартного протокола, там будет все описано

YuriBel
01.06.2012, 13:41
какой может быть минимальная длительность импульса на быстром входе (допустим Fast DI1) для того, чтобы программный счетчик, таймер или переменная активировались? 100 мкс?

Отвечу, как неопытный специалист, с оговоркой что все сказанное- IMHO, основанное на прочитанном в документации и на собственном понимании того, как что происходит. то есть могу быть неправ, если так - буду рад, если меня поправят.

Итак, если не применять специальных средств, то разницы быстрых и не быстрых входов вы не почувствуете. Ибо, в своей пограмме, которая выполняется циклично, вы имеете дело не с физическими входами и выходами, а с их отображением в памяти. В цикле контроллера кроме вашей программы выполняется еще кое какая малозаметная но важная работа - перед выполнением программы читается и отображается в памяти состояние входов, после исполнения программы - отбражение выходов передается на физические выходы. Также еще происходит обмен с внешними устройствами по разным интерфейсам.
Так вот, если в момент исполнения вашей программы (а этот процесс занимает какое-то конкретное время) проскочил короткий импульс по входу (появился и исчез), то он скорее всего останется незаметным для ваших программных счетчиков и таймеров.
Но не все так плохо, потому что о нас позаботились. В конфигурации контролеера можно применить спецсредства - а именно заменить режим работы быстрых входов на: - либо счетчик - либо энкодер - либо на прямое управление по прерыванию высокочастотного таймера.
Если выбираете счетчик, то соответственно, в своей программе читаете его значение, которое за нас уже сосчитали в фоновом режиме, не пропуская короткие импульсы (вот здесь характеристики длительности нужно смотреть в РЭ) То есть нам в программе считать импульсы уже не надо. Примерно также с энкодерами, только там используются сразу два входа на один энкодер. Что касается прямого управления по прерыванию от таймера - то частота таймера указана, стало быть несложно подсчитать какие импульсы можно отлавливать, ну а сама обработка - в этом случае предложена нам, на наш вкус и опыт. Как это делается, описанов отдельном документе, который я не читал, по сему больше мне добавить нечего.

вот как-то так.:)

vooodooo22
01.06.2012, 14:17
Итак, если не применять специальных средств, то разницы быстрых и не быстрых входов вы не почувствуете

т.е. я правильно понял импульс в 1 мс на fast DI1 таймер не уловит? :( мда...

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

ps Но новость конечно печальная

YuriBel
01.06.2012, 15:21
Опять таки без практического опыта:

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

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

Валенок
01.06.2012, 16:16
..прерыванию высокочастотного таймера..

Вот. Можно работать с шажочками 50мкс (или 20 :confused:)

Pointer
01.06.2012, 17:31
т.е. я правильно понял импульс в 1 мс на fast DI1 таймер не уловит? :( мда..
А может вы о вашей задаче напишите подробнее... может и решение найдётся. А вааще поройте в сторону обработки прерываний, я к сожалению пока до этого не дошёл...Знаю как это делается на других ПЛК и время реакции на вызов подпрограммы исчисляется в микросекундах (да даже меньше, главное подпрограмму не раздувать)))

Demus
03.06.2012, 15:56
Здравствуйте. Прошу помощи.
Начинаю изучение ПЛК 100. Задача связать его с ТРМ 133 и скадой. С трм считываю и записываю один параметр. Есть несколько вопросов.
1. ПО индексации. Есть, например, параметр sp.lu. Из вашего примера проекта взял индекс 8 и прочитал значение уставки ночь. Уставку день можно считать индексом 2. На запись индекс 0 и 2 соответственно. В каком документе можно почитать о индексах? ( В этом Список сгенерирован автоматически программой-конфигуратором (Дата и время сборки программы Nov 9 2009 14:15:20)
Thursday, June 03, 2010
есть просто sp.lu и подпись, что индексы меняются от 0 до 8).

2. В документе выше сказано, что sp.lu это число с плавающей точкой и дипазон значений -9999 .. 9999. Почему в примере берется подмодуль unsigned (беззнаковый) variable?

3. Насколько важно прошиваться последней прошивкой для моей задачи? (использование овен мастер rs-485 и модбас слейв tcp).

4. Также вопрос об адресации. По какому адресу считать 8 входов (командой чтения байта) без преобразования их в байт программно?

5. В теме http://www.owen.ru/forum/showthread.php?t=3419&highlight=%F1+%EF%EB%E0%E2%E0%FE%F9%E5%E9 выкладывали пример для преобразования типов данных. (Цитата "Там хитрый формат передачи данных.
Посмотрите пример. Там есть ФБ pkp_convert. Поставьте его в ваш проект, подайте на вход полученное от ТРМ138 значение. Думаю, на выходе получите то, что вам надо.") Как скопировать функциональный блок pkp_convert из того примера в мой проект в виде cfc для наглядности? Пока только сконвертировал в IL и скопировал текстом. Но ни в примере ни в моем проекте преобразование не происходит в режиме эмуляции. Не могу понять почему. Да и в примере обмена PLC100-K.L + TRM133 в эмуляции не просиходит конвертации. "Старт" нажимал.

Рассматриваю ваш пример PLC100-K.L + TRM133 как пособие по опросу. А пример http://owen.ru/forum/attachment.php?attachmentid=806&d=1226063169 как пособие по конвертации. Хотя конвертация есть и в первом примере. Ее я реализовал. Но непонятно почему при задании уставки выше 40 градусов в ТРМ пишутся совсем другие значения (вместо 41 - 0, вместо 42 - 1, вместо 50 - 9 и т.д.).

скада модбас tcp поддерживает.
Мой проект во вложении.

vooodooo22
04.06.2012, 08:46
А может вы о вашей задаче напишите подробнее... может и решение найдётся.

Нужно уловить импульс в 1 мс периодом 10 мс с аппаратного генератора. От импульса в программе должен запуститься таймер активирующий другие таймеры для сдвига этого импульса на различные интервалы времени и для управления длительностью этого импульса. 1 цикл в рамках периода 10 мс. :)

vooodooo22
04.06.2012, 10:04
Не подскажет кто-нибудь кнопка F1 на панели PCL110-32 с фиксацией или без?

YuriBel
04.06.2012, 10:20
Без фиксации

DIG
04.06.2012, 10:28
Из произведенной партии контроллеров делается выборка, выбранные контроллеры проходят испытания (должны проходить). В число испытываемых параметров входит в частности и наработка на отказ, затем делается статистическая обработка результатов, по результатам которой определяется наработка на отказ для данного типа контроллеров. Вообще при сертификации автоматизированных систем может потребоваться расчет надежности, который невозможен без этого параметра.

По идее, такую информацию должен предоставлять производитель оборудования. Но ни к одному из этих модулей данную информацию я не нашел. Хотя все они имеют сертификат соответствия.

vooodooo22
04.06.2012, 11:05
Без фиксации

спасибо :)

Demus
05.06.2012, 00:03
Надеюсь все еще на помощь (пост выше скоро пропадет в сообщениях). В модуле овен мастер unsigned variable вставляется так как на рисунке последний. Т.е. невозможно прописать название переменной, например. Выше этот же unsigned с плюсиком. Из-за чего такое может быть?
ПЛК100-220.Р-М. Проект прилагается.

Yegor
05.06.2012, 06:06
Так что ли?

http://images.devs-on.net/Image/f2zjJ5Mw0c6UG5KT-CoDeSysTRM133pr.png

Правой кнопкой там и Append > 2 byte.

Demus
05.06.2012, 10:28
Спасибо! Если кому не сложно, ответье на мой длинный пост на 93 странице. Хотя бы частично. Очень интересует вопрос о индексации sp.lu и задании уставки выше 40 градусов.

artur6666
06.06.2012, 14:49
дайте плиииз примерную картинку на языке LD!! у меня плк 154. к аналоговому входу подключен датчик давления (выдает ток), а к дискретному выходу подключено реле (вкл.выкл). надо сделать так чтобы при изменении аналогового входа по тому пример от 1 до 2 было ВКЛ а дальше выкл

lajator
06.06.2012, 17:06
Здравствуйте,
Вроде просмотрел все, но ясности сохранением переменных так и нет.Как это организовать при выключении питания ПЛК?
в проге есть структура с предустановленными значениями и глобал. переменная опеделенная как эта структура
TYPE USet :
STRUCT
PB : INT;

END_STRUCT
END_TYPE

VAR_GLOBAL RETAIN

User : USet;

END_VAR
в программе с панели пишем(меняем) значение переменных,

CASE Screen OF
scrParam : IF ChangeScreen THEN
PReg^[48] := User.PB;
END_IF

IF PReg^[48] <> (User.PB) THEN
User.PB := LIMIT(5, PReg^[48], 100);
END_IF

PReg^[48] := User.PB;


END_CASE
вроде при выключении питания все должно сохраняться как ретайн, но по включению там нули, можно вытащить предустановленные значения только "холодным сбросом"
Как сделать сохранение изменений и продолжить работу контроллера после восстановления питания.
конечно извиняюсь, наверняка это уже обсуждалось,и все, кроме меня, знают ответ...
в эмуляторе вроде работает а в действительности нет.

swerder
06.06.2012, 18:03
мне вот сразу стало интересно, как вы в эмуляторе эмулировали отключение питания контроллера? :)
зачем вам структура из 1й переменной?
панель ип320?
по вырезанному куску программы мало чего понятно, возможно у вас изначально PReg^[48] имеет значение 0

Валенок
06.06.2012, 18:23
....
:) :)
Удивительно знакомый код. А где ChangeScreen определяется ?

lajator
07.06.2012, 07:16
[QUOTE=Валенок;84434]:) :)
Удивительно знакомый код. А где ChangeScreen определяется ?[/QUOT


время тик-так, вопросы в воздухе, извиняюсь...
:)

lajator
07.06.2012, 07:20
мне вот сразу стало интересно, как вы в эмуляторе эмулировали отключение питания контроллера? :)
зачем вам структура из 1й переменной?
панель ип320?
по вырезанному куску программы мало чего понятно, возможно у вас изначально PReg^[48] имеет значение 0

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

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

читаю в рэ : "при случайном откл. основного питания контроллер переходит на аварийное и сохраняет промежуточные результаты и работоспособность интерфейсов ethernet в течении 10 минут" и тд... тогда логично предположить, что связь с ПЛК должна сохраняться в течении этого времени. Но у меня связь рвется как только откл. питание. ПЛК нет и полгода, сегодня померил напряжение на аккум. при выключенном ПЛК, 1.4 В, значит живой.

не могу понять, почему беря пром.контроллер для холодильной централи, я могу выключать и включать питание сколько угодно раз, и параметры менять и вернуться к заводским, и никто меня не предупреждает, что количество этих операций ограничено..., и при вкл. питания он продолжает работу с того места и с теми параметрами, которые были перед отключением. мне нужен именно такой алгоритм, но разобраться сам не могу. в чем разница? там автомат с заложенным в него алгоритмом, здесь (ПЛК), "ядро CoDeSys", которая исполняет пользовательскую программу. Значит у меня в ПРГ что-то не так. Я ведь даже и не жду этих 10 мин, но все равно никакие промежуточные результаты не сохраняются.

swerder
07.06.2012, 09:48
все на Power status из модуля статистики ссылаются, что-то с ней надо делать для сохранения и инициализации ретайн переменных. вопрос то наверняка простой для большинства пользователей форума.

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


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


читаю в рэ : "при случайном откл. основного питания контроллер переходит на аварийное и сохраняет промежуточные результаты и работоспособность интерфейсов ethernet в течении 10 минут" и тд... тогда логично предположить, что связь с ПЛК должна сохраняться в течении этого времени. Но у меня связь рвется как только откл. питание. ПЛК нет и полгода, сегодня померил напряжение на аккум. при выключенном ПЛК, 1.4 В, значит живой.
аккумулятор после каждого цикла выключения на 10 минут надо заряжать потом часов 5, да и напряжение рабочее на нем должно быть около 3-4 вольт

я полагаю, что у вас все же ноги нулевых значений растут из PReg^[48]

lajator
07.06.2012, 11:31
а что за вопрос то? ретайн переменные сами автоматом сохраняются в первые секунды после пропажи основного питания

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

аккумулятор после каждого цикла выключения на 10 минут надо заряжать потом часов 5, да и напряжение рабочее на нем должно быть около 3-4 вольт

я полагаю, что у вас все же ноги нулевых значений растут из PReg^[48]

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

ставим начальные, при первом вкл они там и есть. Пользователь через панель вбивает свои, контроллер работает с ними. Выкл/вкл опять имеем начальные. Там же помимо просто уставок есть и кнопочки запуска и состояния переменных, они тоже станут начальными.

про это я знаю, но напряжение в РЭ не указано.Лично я знаю, что если меньше 1 В, то такой в печку. Да и не будет дохлый стабильно держать свое напряжение сутки и более , обязательно разрядится. Вы точно знаете, что 3...4, или просто предполагаете?

не, PReg^ не причем, в этой части кода все правильно написано, это все собственная безграмотность...

swerder
07.06.2012, 13:01
при вкл. питания он продолжает работу с того места и с теми параметрами, которые были перед отключением. мне нужен именно такой алгоритм, но разобраться сам не могу.
алгоритм определяется программой пользователя, а не железом, как реализуете, так и будет работать
Третий закон Грида
Машинная программа выполняет то, что вы ей приказали делать, а не то, что бы вы хотели, чтобы она делала.


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


про это я знаю, но напряжение в РЭ не указано.Лично я знаю, что если меньше 1 В, то такой в печку. Да и не будет дохлый стабильно держать свое напряжение сутки и более , обязательно разрядится. Вы точно знаете, что 3...4, или просто предполагаете?
предполагаю на основе высказываний представителей фирмы на форуме

anowice
08.06.2012, 00:50
Объясните, какая разница между функциональным блоком и программой, FB и PRG? Оба рисуются в CFC квадратиками со входами и выходами, а когда какой способ оформления применить - непонятно.

lara197a
08.06.2012, 01:47
Программа она и есть программа имеет уникальное имя, а для ФБ можно использовать различные имена и вызывать в разных частях программы много раз. Это своими словами.
Если конкретней, то вызовите справку и наберите в поиске FB.

и program

lajator
08.06.2012, 03:39
оглашайте программу, посмотрим. гадание на кофейной гуще бестолку.

предполагаю на основе высказываний представителей фирмы на форуме

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

меряю тестером, напряжения заряда 4.2 В, при выключении основного питания сразу становится 1.4 В. Хотелось бы знать марку, напряжение и емкость аккум.(вдруг придется менять), но это наверняка вопрос из другой ветки.

ssl
08.06.2012, 05:12
При выключении питания на контроллере слетает загруженная программа, приходиться ее заново загружать, подскажите можно ли сделать так чтобы она не слетала, если да - то как?

Demus
08.06.2012, 08:11
Опрашиваю ТРМ 133 с помощью скады через ПЛК100. Все переменные модуля мдбас слейв считываю, записываю уставку день. Но уставку ночь записать не удается, хотя делаю по аналогии. Подскажите, по какому адресу ее записывать и какой функцией?

swerder
08.06.2012, 09:43
lajator примеров чего?
ssl вы загрузочный проект создаете?

lajator
08.06.2012, 10:03
[QUOTE=swerder;84508]lajator примеров чего?


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

ssl
08.06.2012, 10:08
Да, Онлайн - Создание загрузочного проекта, пишет что созданы два файла один с расширением .PRG другой - .CHK, какой из них загрузочный?

swerder
08.06.2012, 10:21
ssl prg. только надо создавать их во время подключения к контроллеру, а не в режиме эмуляции
lajator повторю еще раз: retain переменные сами сохраняются. а вот что будет делать ваша программа после отключения питания зависит от того, что вы наваяете в кодесисе.
объявите к примеру retain переменную shag, напишите структуру case step of (смотрите в справке case) и придумайте несколько состояний этого шага, инициализация, работа, выключение, авария... при выключении питания текущее состояние шага запомнится, а после включения продолжится с запомненного состояния.

lajator
08.06.2012, 12:33
объявите к примеру retain переменную shag, напишите структуру case step of (смотрите в справке case) и придумайте несколько состояний этого шага, инициализация, работа, выключение, авария... при выключении питания текущее состояние шага запомнится, а после включения продолжится с запомненного состояния.

Спасибо!, вот оно, у меня то просто тупо все на начальные возвращается...

vooodooo22
08.06.2012, 15:18
Добрый день всем.
Такой вопрос возник, если я вставлю в конфигурации ПЛК модуль баттон как произвести указанные манипуляции в РП: "Если контроллер циклически перегружается из-за ошибок в программе, сохраненной во Flash-памяти, или некорректной записи программы во Flash-память, сле
дует, удерживая нажатой кнопку «Старт/Стоп» на передней панели контроллера, нажать кнопку «Сброс». Программа из Flash-памяти не будет автоматически запущена, что даст возможность подключиться к контроллеру и загрузить в него корректно работающую программу"?

Спасибо

Yegor
09.06.2012, 07:58
По идее, к тому времени, когда предлагается удерживать кнопку, ваша конфигурация ещё не загрузилась.

vooodooo22
09.06.2012, 13:37
Как упростить представленную на скрине программку, исключив таймеры TON. Нужно чтобы шел перебор таймеров:
q1 активна 4 сек,
как только q1 погасла q2 стала активна на 2,5 сек,
как только q2 погасла q3 стала активна на 5 сек
и т.д. по скрину

Таймеры TON в данном случае ненадежны. Так в случае:
TP1(IN:=TRUE, PT:=T#5ms)
TON1(IN:=TP1.Q, PT:=T#4ms)
TON1.Q не всегда срабатывает (!). Проверено аппаратно - PLC110-32M

ps.
По идее, к тому времени, когда предлагается удерживать кнопку, ваша конфигурация ещё не загрузилась.
Спасибо, возьму на заметку

Появился еще один вопрос по PLC110-32M:
В РП ПЛК110.160 говорится о том, что замена модуля "Fast Discretу Input" на "Fast discrete inputs – direct control" доступна только в ПЛК110-60, но в таргет-файле ПЛК 110-32М присутствует возможность таковой замены. Чему верить? Документации или таргет-файлу? :)

Валенок
09.06.2012, 16:49
Таймеры TON в данном случае ненадежны
Бред.

TP1(IN:=TRUE, PT:=T#5ms)
TON1(IN:=TP1.Q, PT:=T#4ms)

Если у вас рабочий цикл больше цикла работы TP - причем тут TON ?
Тоже самое если TP.PT/TON.PT/Время_цикла - не кратны

PS

q1 активна 4 сек,
как только q1 погасла q2 стала активна на 2,5 сек,
как только q2 погасла q3 стала активна на 5 сек
..

SFC рулит

PS PS
можно так
ton(in:=start, pt := T#1ms * -1);
q1:=start and ton.et =< T#4s ;
q2:=ton.et > T#4s and ton.et <= T#6.5s;
....

ssl
13.06.2012, 09:32
Как упростить представленную на скрине программку, исключив таймеры TON. Нужно чтобы шел перебор таймеров:
q1 активна 4 сек,
как только q1 погасла q2 стала активна на 2,5 сек,
как только q2 погасла q3 стала активна на 5 сек
и т.д. по скрину

Таймеры TON в данном случае ненадежны. Так в случае:
TP1(IN:=TRUE, PT:=T#5ms)
TON1(IN:=TP1.Q, PT:=T#4ms)
TON1.Q не всегда срабатывает (!). Проверено аппаратно - PLC110-32M

ps.
Спасибо, возьму на заметку

Появился еще один вопрос по PLC110-32M:
В РП ПЛК110.160 говорится о том, что замена модуля "Fast Discretу Input" на "Fast discrete inputs – direct control" доступна только в ПЛК110-60, но в таргет-файле ПЛК 110-32М присутствует возможность таковой замены. Чему верить? Документации или таргет-файлу? :)

Зачем перекрытие в 10 ms, после ТР поставить триггер заднего фронта и после q1 включается q2 и т. д.

ssl
13.06.2012, 09:45
Все работает

t0lyan
13.06.2012, 10:18
Подскажите пожалуйста, как установить связь между ПЛК110.R-M по GPRS для диспетчерского контроля. Как сделать так чтобы ПЛК в случае аварии сама отправляла данные в качестве мастера, а не ждал когда OPC сервер сделает запрос?
за ранее спасибо!

vooodooo22
13.06.2012, 11:03
можно так
ton(in:=start, pt := T#1ms * -1);
q1:=start and ton.et =< T#4s ;
q2:=ton.et > T#4s and ton.et <= T#6.5s;
....


Зачем перекрытие в 10 ms, после ТР поставить триггер заднего фронта и после q1 включается q2 и т. д.

спасибо!;)

ssl
15.06.2012, 07:39
Подскажите как можно программу на языке ST перевести в FBD?

Валенок
15.06.2012, 08:49
сначала откомпилить
POU отдельно - проект/объект/конвертировать

HukuTa_
19.06.2012, 12:51
Подскажите мануал по FBD.
Заранее спасибо))

vooodooo22
19.06.2012, 14:20
Подскажите мануал по FBD.
Заранее спасибо))

Петров, И.В. Программируемые контроллеры - 7.6. Функциональные блоковые диаграммы (FBD) - стр.144

CoDeSys_V23_RU (либо справка программы CoDeSys) - пункт 5.4 - редактор FBD

vooodooo22
19.06.2012, 14:29
Скачал пример организации управления с панели оператора СП270(Slave) на ПЛК(Master). В архиве 2 файла:
• plc100rm_Master.pro
• Sp270_slave.twp

Чем открыть Sp270_slave.twp? :(

Валенок
19.06.2012, 15:55
http://www.owen.ru/catalog/95961404
Ищем СП200

vooodooo22
19.06.2012, 16:26
http://www.owen.ru/catalog/95961404
Ищем СП200

Спасибо :)

ssl
20.06.2012, 07:45
Подскажите как запустить СoDeSys HMI с проектом из командной строки? Мануал CoDeSys_Visu_V23_RU ясности не вносит.

Константинов Сергей
20.06.2012, 14:21
Подскажите как отформатировать динамически получаемой значение при визуализации. Нужно избавится от 5 из 6 цифр после запятой. Читал про функцию sprintf но что то ни как не соображу куда ее нужно запихать.

ВОПРОС снимаю. Хороший у вас форум

Есть другой вопрос. Как из первого окна визуализации переключится на второе?

S.A.D.
20.06.2012, 22:02
скачал проект-пример для работы с ПЧВ по rs485 с кодезисом. При запуске кодезис не могет найти файл module.root Кто это такой, и где его взять?

S.A.D.
20.06.2012, 23:21
загляните в конфигуратор, есть ли среди установленных на Вашем ПК таргетов, тот для которого делан проект

точно. Про тагерт на другой ПЛК то я забыл)))

S.A.D.
21.06.2012, 12:39
а еще такой тупой вопрос: есть модуль МВ110-8А. К нему подключен датчик температуры. Если в конфигурации аналового входа можно выставить какой это тип датчика и чему соответствует допустим 4 мА, а чему 20 мА, и кодесис сам выдаст на значение в градусах. А как это сделать через модуль? Модуль подключен по modbus rtu через universal modbus device. Создал real input module(register address 4 согласно инструкции). А дальше что делать? Придут ли сюда данные и если да, то как их представить в градусах?

S.A.D.
21.06.2012, 21:54
смотрим документ http://www.owen.ru/uploads/rie_mv110-224_8a_984.pdf и видим в таблице В.4 что первому каналу соответствуют с 0 по 5 регистры модбас, из них число REAL занимает 4, 5 регистры и в программе ПЛК эта переменная будет такая же как через конфигуратор

да, я это видел. Я считываю значение из 4 регистра через real input module. В настройках этого модуля нет значений Max FV и Min FV которые есть в настройках канала аналогового входа ПЛК. Эти параметры указывают что есть 4мА а что 20мА соответственно. В real input module универсального устройства модбас, считывающего значение моего датчика таких параметров нет, а значит будет 4мА= -много, 20мА= +много.

как мне привести это значение типа REAL, считываемое с 4 регистра модуля МВ110-8А к реальным градусам. В Конф ПЛК это делают параметры Max FV и Min FV

S.A.D.
22.06.2012, 00:00
Вот тут Вы совсем огорчаете
А подскажите для чего тогда параметры из таблицы В.2
Ain.L и Ain.H

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

Большое спасибо за внимание к моему вопросу.!!!

ssl
22.06.2012, 03:41
Подскажите, работает ли Master SCADA на Windows 7?

S.A.D.
22.06.2012, 09:17
Подскажите, работает ли Master SCADA на Windows 7?

работает. По мастерскаде сюда http://www.owen.ru/forum/forumdisplay.php?f=19

anowice
24.06.2012, 02:24
На SFC нарисовал пустое действие, у которого условие перехода на следующее "TRUE".
В режиме онлайн шаг с этим действием стал активным, а далее, почему-то не перешел, хотя условие перехода всегда истинно. Как такое может быть? Может я ещё чт-нить забыл? Само PОU выделено в отдельную задачу, но в конфигурации задач вообще не показано выполняющихся задач.

anowice
24.06.2012, 23:20
При отладке дохожу до шага TurnOff, у которого даже входное условие уже не выполняется. Программа запущена, и не идёт дальше почему-то, что я не так делаю?

Василий Кашуба
26.06.2012, 12:29
При отладке дохожу до шага TurnOff, у которого даже входное условие уже не выполняется. Программа запущена, и не идёт дальше почему-то, что я не так делаю?

А почему у вас PROGRAM PLC_PRG сделана на CFC?

vooodooo22
26.06.2012, 15:58
Для организации линии резервного управления ПЛК110-32 через MasterScada добавил в конфигурацию ПЛК модуль Modbus (Slave), в который вставил подмодуль Modbus(Master).

В целях изучения принципа работы Modbus требуется:
1. через скада (или opc-сервер) записать значение в переменную codNumPrg
2. через скада (или opc-сервер) читать значение переменной proverka_lamp

1 пункт работает на ура.
2 пункт - opc-сервер не читает значение:( подскажите пожалуйста в чем может быть причина? правильно ли на скрине проставлены регистры?

Изучать Modbus начал относительно недавно. По мере изучения возникли еще пару вопросов:
• чем чревато подключение модуля modbus(slave) и его подмодуля modbus(master) на один интерфейс(RS-232)?
• может ли подмодуль modbus(master) опрашивать модуль modbus(slave) если оба они находятся на одном ПЛК без каких-либо последствий? (адрес слейва - 1, адрес опрашиваемого устройства - 1)

Скрины приложил.

ps может я замудрил чего:o

...вспомнил еще проблемку с видимостью модулей в программе EasyWorkPLC. В конфигураторе проставил требуемым значениям Visibility - Yes. Загрузил проект в ПЛК. Запускаю EasyWorkPLC - подключаюсь - связь есть, PLC-Browser работает(инфа, время отображает), но переменных НЕТ :( Окно основное пустое. Что не так?

anowice
26.06.2012, 23:58
А почему у вас PROGRAM PLC_PRG сделана на CFC?
Ну мне кажется, что это дело вкуса, разве не так? CFC мне тоже нравится.
Ещё попробовал запускать reinit_modem из PLC_PRG, слегка модифицировав программу - так теперь работает ожидаемо. А с выносом в отдельную задачу что-то не получилось. Для сравнения новый проект:

vooodooo22
27.06.2012, 12:24
capzap, спасибо большое, решил с простого начать, но и тут возникла проблемка, то ли адрес не тот, то ли еще чего. В чем может быть роблема?:confused:
Скрин приложил

ps регистр 0х0000 работает без проблем, а вот выше ... видать я что-то не допонял с адресами памяти

vooodooo22
27.06.2012, 13:35
добавте в конец еще один 8-и битный модуль, это для страховки. А в опс измените адрес на 0х0001 если это регистр, если Coils то 0х0010(HEX)

еще раз премного благодарен, кажется все встало на свои места - каждый бит - это следующий адрес (первые 2 байта=16бит, адреса от 0 до 15(Dec) если Coils, и 0 если регистр; следующие 8 бит - адреса от 16 до 23(Dec)) и т.д. Как то так, принцип понял;)

Соответственно в модуле модбас(мастер) так же? Что если в одной конфигурации ПЛК есть модуль и модбас(мастер) и модбас(слейв), адреса у них будут начинаться у обоих с нуля, как у отдельных независимых друг от друга устройств?

vooodooo22
27.06.2012, 14:12
у мастеров нет адресации регистров, они читают только то что Вы в настройках укажете

спасиб, ушел переваривать;)

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

vooodooo22
28.06.2012, 08:40
Добрый день. Подскажите что делаю не так. См. рисунок во вложении. Ведь в руководстве сказано что входная переменная может быть любого типа.

интересен тот факт, что добавив к нулю ".0" все работает как надо =)

Коля О
28.06.2012, 22:29
Работает. Большое спасибо за подсказку!

Валенок
28.06.2012, 22:37
интересен тот факт, что добавив к нулю ".0" все работает как надо =)
Вы уверены что как надо ? Здается мне что аффтару нужно поменять местами 0 и b1
А сам факт - неинтересен. Обычное приведение к типу

vooodooo22
29.06.2012, 09:30
Вы уверены что как надо ? Здается мне что аффтару нужно поменять местами 0 и b1
А сам факт - неинтересен. Обычное приведение к типу

:D дилетант, что поделаешь, прошу прощения, а интерес - это дело сугубо личное;)

Коля О
29.06.2012, 18:58
Автор поменял 0 и b1 и тоже работает, интересно как новичку а почему пример vooodooo22 с точкой в нуле работает? Кстати расположение переменных получилось при конвертации с IL в FBD с примера в руководстве.

Валенок
29.06.2012, 20:59
Автор поменял 0 и b1 и тоже работает,.
ST :
y := LIMIT( min, x, max )
SFC :
порядок тот же, но сверху вниз.
min
x
max

LIMIT - встроенный набор бинарных операций - MIN и MAX
y:= MIN( MAX( x, min ), max)
По видимому выходной тип этой функции определяется типом подследственного - x, а не самым старшим типом в каждой паре по ходу вычислений как обычно.И после результат приводится к типу приемника. Ну намудрили ребята с перегрузками - и у фрицев бывает октоберфест. Тоже аффтары.
У Вас подследственный - 0. Делайте выводы.

Валенок
30.06.2012, 00:07
Щас за спину забегу :)

asupsp700
30.06.2012, 16:10
Скажите пожалуйста можно ли вызвать это окно повторно или оно показывается только при первоначальном создании проекта? Просто разбираюсь с OPC сервером и мне нужно в уже рабочем проекте поставить галочку.

asupsp700
30.06.2012, 16:20
Сам задал и сам отвечаю: Во вкладке ресурсов (Resources) Организатора объектов CoDeSys выбирается утилита Target Settings :)

const3
02.07.2012, 11:08
Здраствуйте. Как в codesys перезапустить таймер?

timerWait:TON;

timerWait(IN := TRUE, PT:= T#2s); (*запуск таймера, таймер нужен для того чтобы все приборы успели запустится*)


пытаюсь сбросить :
timerWait(IN := FALSE, PT:= T#2s); (*запуск таймера, таймер нужен для того чтобы все приборы успели запустится*)

или так timerWait.IN:=FALSE; но ничего не получается...
ПОчему?

const3
02.07.2012, 16:37
Я задал простой вопрос, шо за манера отвечать вопросом на вопрос. Мы же все таки програмисты.
Вопрос -> ответ
А не вопрос -> вопрос.

Повторяю. Как в программе перезапустить таймер?

Валенок
02.07.2012, 16:54
...Надо смотреть сам проект, чтоб определить при каких условиях происходит вызов таймера

Aleksandr_Sorokin
03.07.2012, 03:15
Почему в режиме эмуляции не выполняются элементарные логические функции?
То есть, простейший проект (FBD): две переменные типа BOOL заводятся на блок "И" и из него выходит третья (также BOOL). Переменные объявлены глобальными и увязаны с адресами каналов контроллера ПЛК110-32-М. Проект компилируется и запускается нормально. Но почему-то при переводе какой либо (или обоих) входной переменной в состояние "1" выход всё равно остаётся в состоянии "0". Не понятно.
В РП написано, что в режиме эмуляции функции внешних библиотек не исполняются, но ведь логические операторы входят в Standart.lib.
Спасибо.

vooodooo22
03.07.2012, 08:56
Здраствуйте. Как в codesys перезапустить таймер?

timerWait:TON;

timerWait(IN := TRUE, PT:= T#2s); (*запуск таймера, таймер нужен для того чтобы все приборы успели запустится*)


пытаюсь сбросить :
timerWait(IN := FALSE, PT:= T#2s); (*запуск таймера, таймер нужен для того чтобы все приборы успели запустится*)

или так timerWait.IN:=FALSE; но ничего не получается...
ПОчему?

смысл уже конечно понятен по предыдущим ответам, но все же...
в SFC - все нормуль

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

amn
09.07.2012, 10:19
Уважаемые форумчане. У кого-нибудь появлялось такое сообщение в Кодесис в режиме симулятора при входе online-Login:

Инструкция по адресу "00x00c41a12" обратилась к памяти по адресу "0x00000078". Память не может быть "read".

"OK" - завершение приложения
"Отмена" - отладка приложения

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

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

zaur
10.07.2012, 12:59
Возник такой вопрос. Кто-нибудь в CDS перетаскивал например Modbus(master).UNM из одной конфигурации в другую (то есть из одной программы в другую). Просто ПЛК разные, но к ним будут слевы одинаковые подключены подключены, руками перебивать как то дурной тон, да и ошибиться можно (регистр очень много).

Николаев Андрей
10.07.2012, 14:35
Некоторые умельцы делают экспорт. Правят файл и делают импорт.

amn
10.07.2012, 21:03
Уважаемые программисты! Такой вопрос у меня.
Реально ли в редакторе FBD править текст? Я не могу никак к нему приспособиться. Если с первого раза правильно не написал, то любые правки, типа вставить дополнительный выход после AND приводят к неправильной работе.

Например, у меня верхний вход оператора AND - 1, нижний вход - 1. На выходе добавил ответвление при помощи ASSIGN. В результате работает только вторая добаленная ветка. На первую 1 не приходит. Неужели в этом редакторе нельзя из выхода сделать ответвления?

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

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

Спасибо. С Уважением, Михаил.

vooodooo22
11.07.2012, 11:25
Например, у меня верхний вход оператора AND - 1, нижний вход - 1. На выходе добавил ответвление при помощи ASSIGN. В результате работает только вторая добаленная ветка. На первую 1 не приходит. Неужели в этом редакторе нельзя из выхода сделать ответвления?


Сделайте пожалуйста скрин :) не очень понятно...



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


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


Переходите на CFC (аналог FBD) - свобода действий. Единственное НО(!): В FBD поток данных идет по веткам, как я понимаю сверху вниз и слева направо, в CFC поток идет по нумерации блоков - за этим нужно следить(!) или просто можно активировать пункт "в соответствии с потоком данных" и править его каждый раз после редактирования программы дабы не было сбоев. По ходу дела Вам станет более понятнее.




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

CoDeSys версия 2.3.9.35 (Русифицированная версия) (http://www.owen.ru/catalog/55710393)

Гарчев Евгений
11.07.2012, 11:27
Может Вам язык CFC попробовать, тот же FBD, но без привязки к цепям.

amn
11.07.2012, 18:02
Спасибо огромное, CFC это то что нужно. Совсем другое дело.

vooodooo22
20.07.2012, 10:06
Подскажите пожалуйста возможно ли на языке ST организовать прыжок выполнения сценария программы через строки?

Пример: после выполнения строки №31 по выполнению условия прыгнуть на строку №26, если условие не выполнилось продолжить выполнение сценария программы перейдя к строке №32

Спасибо

S.A.D.
20.07.2012, 10:40
Подскажите пожалуйста возможно ли на языке ST организовать прыжок выполнения сценария программы через строки?

Пример: после выполнения строки №31 по выполнению условия прыгнуть на строку №26, если условие не выполнилось продолжить выполнение сценария программы перейдя к строке №32
Спасибо

я, конечно, могу быть неправ, но то что вы хотите реализовать сродне паскалевскому оператору goto и это противоречит принципу структурного программирования. А ST это язык структурированного текста.
пробуйте придумать как это написать структурно. Если строка 26 выполняет какое-то свое дело (грубо говоря блок) то можно сделать ее как ФБ, функцию или PRG и в строке 31 вызывать его или через оператор цикла. Можно посмотреть ваш код или более подробное описание?)

RV9WFJ
20.07.2012, 12:40
REPEAT
Instructions
UNTIL Boolean expression
END_REPEAT

Dmi_Nik
20.07.2012, 13:20
Здравствуйте! Помогите пожалуйста разобраться с подключением операторской панели Weintek 6070ih к МВ110-224.ТД по RS485.

Спасибо.

vooodooo22
20.07.2012, 14:44
Усе понял, опробую, спасибо

ps правда с репит не совсем подружился еще :)

Малышев Олег
20.07.2012, 18:18
не нужно repeat - повтор и так идет в цикле ПЛК.
используйте
if
else
end_if
while и repeat можно использовать только для работы с короткими циклами

vooodooo22
20.07.2012, 19:38
не нужно repeat - повтор и так идет в цикле ПЛК.
используйте
if
else
end_if
while и repeat можно использовать только для работы с короткими циклами

скорей всего буду использовать пример S.A.D.: создать блок и вызывать его в нужной строке. а на счет if - это основной инструмент ;) + CASE :)

Dwitty
21.07.2012, 03:40
Подскажите, насколько сложно будет создать программу управления двумя нагревателями. Т.е. задействовать 2 полноценных канала ( в качестве датчиков две термопары) для 2х нагревателей как в трм151( с вычислителями, регуляторами, ПИД коэффициентами и т.п.) и использовать в этих каналах дополнительные регуляторы. Точнее, создать несколько разных профилей со своими уставками, и чтобы в каждом профиле был задействован свой отдельный регулятор. ?
Программированием никогда не занимался, хочется узнать хоть приблизительное время, за сколько можно разобраться с CoDeSys и создать вышеописанное с нуля.

Yegor
21.07.2012, 09:34
Полгода.​​​

IVM
21.07.2012, 12:41
Подскажите, насколько сложно будет создать программу управления двумя нагревателями. Т.е. задействовать 2 полноценных канала ( в качестве датчиков две термопары) для 2х нагревателей как в трм151( с вычислителями, регуляторами, ПИД коэффициентами и т.п.) и использовать в этих каналах дополнительные регуляторы. Точнее, создать несколько разных профилей со своими уставками, и чтобы в каждом профиле был задействован свой отдельный регулятор. ?
Программированием никогда не занимался, хочется узнать хоть приблизительное время, за сколько можно разобраться с CoDeSys и создать вышеописанное с нуля.
Кто Вы по образованию, чем занимаетесь и каков Ваш возраст ?

kolyan
21.07.2012, 13:34
Вообще бы неплохо Овену создать библиотеки для кодесис с готовыми регуляторами - аналогами ТРМ-12, ТРМ-212 и.т.д.
Это очень бы облегчило людям жизнь.

IVM
21.07.2012, 14:53
Вообще бы неплохо Овену создать библиотеки для кодесис с готовыми регуляторами - аналогами ТРМ-12, ТРМ-212 и.т.д.
Это очень бы облегчило людям жизнь.
Это не трудно сделать самому, попутно можно хорошо разобраться с работой PID - регулятора.

Dwitty
21.07.2012, 15:07
Это не трудно сделать самому, попутно можно хорошо разобраться с работой PID - регулятора.
А если нет времени сильно углубляться?! А так, образно, собрал по блочкам все необходимое, записал и всё.

Dwitty
21.07.2012, 15:09
Кто Вы по образованию, чем занимаетесь и каков Ваш возраст ?
Инженер, электроникой, до 35. С программирование никогда не сталкивался вплотную.

kolyan
21.07.2012, 16:03
Это не трудно сделать самому, попутно можно хорошо разобраться с работой PID - регулятора.

Можно и самому.
Только, зачем тогда библиотеки? И макросы?
Ведь наличие большого количества стандартных решений упрощает и убыстряет программирование.
По аналогии,можно и хлеб самому выпекать, а не покупать в магазине...

kolyan
21.07.2012, 16:24
Чтобы получить регулятор, нужно многое ещё пригораживать - зона нечувствительности, контроль состояния датчика, блок управления ИМ и.т.д. и.т.п.
А хотелось бы иметь в библиотеках набор готовых макросов.
Как, например, BLINK, TON - вставил и всё.

IVM
22.07.2012, 12:23
Инженер, электроникой, до 35. С программирование никогда не сталкивался вплотную.
Любое дело можно осилить если есть желание и упорство. Чем больше желания и упорства тем быстрее будет достигнут результат. Если нет желания или возможности погружаться в эти дела, то наймите готового специалиста, который по вашему ТЗ сделает все что надо. Иного пути нет.

kolyan
22.07.2012, 12:26
Я ж не против собственных изысканий.
Я просто за расширение библиотек - вот и всё.
Далеко не все сильны в программировании и далеко не всегда есть время на его изучение.
Вот, например, у других производителей ПЛК, есть даже инструмент для автоматического генерирования программ.
При этом пользователь только отвечает на вопросы программы.
Я про это и не заикаюсь, а только предложил Овену создать более законченные библиотеки регуляторов.
Впрочем, у каждого своя точка зрения.

Dwitty
22.07.2012, 14:08
Очень интересно, можно ссылочку в лс

Dwitty
22.07.2012, 14:43
Обалдеть, вот это молодчаги, как упростили жизнь людям, сколько времени и средств можно сэкономить!

rovki
22.07.2012, 17:06
Иные уже давно не с нами ,а дела(мысли) их живут:rolleyes: Причем большенство не были признаны современниками.;) .Есть первопроходцы ,им всегда тяжелей ,а есть пользователи этих проторенных дорог .Первых всегда меньше .Для первых -дорога цель ,для вторых -пункт N.
Тост для отпускников- так пусть для людей дорога к морю будет легче ,а целью будет само море :D .Выпьем за тех кто проложил нам эти дороги.:)

kolyan
22.07.2012, 22:34
Я пользуюсь "Овеном", поэтому и предлагал усовершенствовать библиотеки регуляторов КДС.
Взять ту же ветку про ПР-110. Ведь, не остановились люди на основных макросах!
Появляются и решаются задачи, пишутся новые макросы...
Пора ROVKI переманивать в раздел ПЛК:)

rovki
22.07.2012, 23:28
А зачем переманивать ,главное идея и автор ,что бы их реализовать. .Частенько идеи высказанные в теме ПЛК реализую в ПР(те которые способен решить ПР).Берите идеи ,макросы что для ПР и реализуйте из в виде библиотечных элементов ,я имею ввиду не универсальные макросы ,которых в кодесис полно и так ,а специфические для управления различными обьектами .Главное подход -быть первопроходцем ,что бы другим легче было шагать по пути автоматизации .Больше времени уделять обьекту(системе) управления ,а не средствам .Я не идеалист и понимаю ,что для многих разработчиков этот альтруизм может ударить по карману(тем ,кто ищет заказчиков на форуме) .Но учитель ,все же на голову мудрее учеников.И решая задачи для других ,да же бесплатно на форуме, он поднимается на следующую ступень развития .Да и признательность учеников(пользователей) ,тоже чего то стоит.Естественно этот путь не для всех .Спасибо !

Николаев Андрей
23.07.2012, 01:12
Господа. давайте по этой теме новую ветку заведем, не будем здесь.
К стати приглашаем всех желающих поучаствовать в написании библиотек - велком.
Есть идеи что написать, нет рук :(
Так что будем рады и рукам и идеям, возможно даже на коммерческой основе. НО все это не в этом топике.

ssl
23.07.2012, 02:32
Здравствуйте! Помогите пожалуйста разобраться с подключением операторской панели Weintek 6070ih к МВ110-224.ТД по RS485.

Спасибо.

Какой конкретно у Вас вопрос?
У Вас МВ110 сконфигурирован?
Какие задачи стоят перед панелью - управление и мониторинг?

Валенок
23.07.2012, 03:06
Тост для отпускников- так пусть для людей дорога к морю будет легче ,а целью будет само море :)
Ну прям как в воду смотрит..:)

IVM
23.07.2012, 10:53
Обалдеть, вот это молодчаги, как упростили жизнь людям, сколько времени и средств можно сэкономить!
О чем это Вы ?

Dmi_Nik
23.07.2012, 10:57
Какой конкретно у Вас вопрос?
У Вас МВ110 сконфигурирован?
Какие задачи стоят перед панелью - управление и мониторинг?


Да мв110 сконфигурирован. перед панелью стоит задача мониторинга. Панель нужно настроить как мастер сети чтоб была связь по 485.

Параметры подключения выставлены одинаковые.

ssl
23.07.2012, 12:17
Да мв110 сконфигурирован. перед панелью стоит задача мониторинга. Панель нужно настроить как мастер сети чтоб была связь по 485.

Параметры подключения выставлены одинаковые.

В панели Modbus RTU (zero-basid addresing)

Измеренное значение напряжения, мВ

0x3E - 0x3F – 1 канал (регистры 62-63)
0x40 - 0x41 – 2 канал (регистры 64-65)
0x42 - 0x43 – 3 канал (регистры 66-67)
0x44 - 0x45 – 4 канал (регистры 68-69)

Переменная типа float32*1 Только чтение

Dmi_Nik
23.07.2012, 13:14
В панели Modbus RTU (zero-basid addresing)

Измеренное значение напряжения, мВ

0x3E - 0x3F – 1 канал (регистры 62-63)
0x40 - 0x41 – 2 канал (регистры 64-65)
0x42 - 0x43 – 3 канал (регистры 66-67)
0x44 - 0x45 – 4 канал (регистры 68-69)

Переменная типа float32*1 Только чтение



НУ да ... так и делаю.... только связи все равно нет... в системных настройках панели в "Тип ПЛК" уже все MODBUS перебрал... никак не цепляется... может надо как-то "запустить" прием-передачу.. каким нить регистром мождет управляется???

ssl
24.07.2012, 03:05
Если параметры обмена одинаковые, связь должна установиться автоматически.
Проверьте правильность подключения RS-485, подключение 2-мя проводами GND не используется. В инструкции есть распиновка.

P.S. А вообще лучше бы взглянуть на Ваши проекты

Dmi_Nik
24.07.2012, 11:22
Если параметры обмена одинаковые, связь должна установиться автоматически.
Проверьте правильность подключения RS-485, подключение 2-мя проводами GND не используется. В инструкции есть распиновка.

P.S. А вообще лучше бы взглянуть на Ваши проекты



Вот ссылка... rghost.ru/39383075 там проект панели и скрин окна конфигуратора.

Спасибо большое.

ssl
24.07.2012, 12:00
У Вас в панели источником информации для цифровых полей является Local HMI, а должен быть Modbus RTU zero-basid addresing. Local HMI - это внутренние регистры панели, Modbus RTU zero-basid addresing - это то что считывается по Modbus. Поменяйте источник. Если не поможет попробуйте убрать задержку ответа.

Dmi_Nik
24.07.2012, 12:28
У Вас в панели источником информации для цифровых полей является Local HMI, а должен быть Modbus RTU zero-basid addresing. Local HMI - это внутренние регистры панели, Modbus RTU zero-basid addresing - это то что считывается по Modbus. Поменяйте источник. Если не поможет попробуйте убрать задержку ответа.



ООО... Спсибо огормное появлась связь!!! ТОлько еще вопрос что такое за 3х...4х...5х...6х... ???? http://rghost.ru/

Dmi_Nik
24.07.2012, 12:29
вот фото http://rghost.ru/

etruscilla
24.07.2012, 14:02
Здравствуйте, товарищи программисты! Подскажите, пожалуйста, как разобраться с проблемой. При открытии некоторых проектов в Кодесис в меню Онлайн у меня стоит галочка Режим Эмуляции, которую я не ставила, т.к. не пользуюсь этим режимом. Строка не активная, поэтому галочку я убрать не могу. Подскажите, может, в каких-то настройках надо убрать...

Малышев Олег
24.07.2012, 15:39
Установите нужный таргет, если таргет не стоит снять галочку не получится.

ssl
24.07.2012, 15:49
ООО... Спсибо огормное появлась связь!!! ТОлько еще вопрос что такое за 3х...4х...5х...6х... ???? http://rghost.ru/

3х...4х...5х...6х... - формат работы с регистрами, для переменной типа float, если не ошибаюсь, 4х, в любом случае попоробуйте все.

ssl
25.07.2012, 05:06
В руководстве к EB8000 расписана адресация

Dmi_Nik
25.07.2012, 11:54
Спасибо огромное за оказанную помощь!!!

a1ex
27.07.2012, 10:37
Здравствуйте! Помогите пожалуйста примером, как в ПЛК100 с помощью callback Reset закрыть все сокеты в программе.

Малышев Олег
28.07.2012, 11:19
Здравствуйте! Помогите пожалуйста примером, как в ПЛК100 с помощью callback Reset закрыть все сокеты в программе.

Циклом for i:=1 to used_sock_count do SysSocketClose(my_sock[i]);end_for
если сокет уже закрыт ничего страшного не будет

Scream
30.07.2012, 16:41
Доброе время суток уважаемые форумчане и собственно вот у меня такая проблема - есть ПЛК 100 к нему нужно подключить МК 110 8ДН 4Р, МВ 110 224 1ТД через RS-485 и ИП 320 через RS-232. Я подключил МК 110 через Modbus master но не пойму как им управлять, по идее на МК 110 8 входов и 4 выхода, как видеть и контролировать их? Помогите пожалуйста

Николаев Андрей
30.07.2012, 16:49
Буду банален - 100% ответов тут:
http://www.owen.ru/forum/forumdisplay.php?f=49

erevfil
30.07.2012, 20:39
Извиняюсь,если не по теме. подскажите,как сделать,чтоб в программе,вместо счетчика МДВВ отображалась FALSE или TRUE логика,при подачи сигнала на вход?
за ранее спасибо..

ssl
31.07.2012, 03:29
Данные от МДВВ предаются регистрами, которые представляют собой цифровой код т.е. последовательность нулей и единиц, читай TRUE и FALSE логика (Булева алгебра). Вопрос как извлечь этот цифровой код из регистра? Тип данных регистра WORD - выбираем оператор преобразования WORD_TO_BYTE - выбираем функциональный блок UNPACK на выходе которого получаем значение регистра записанное последовательностью битов

erevfil
31.07.2012, 10:55
Данные от МДВВ предаются регистрами, которые представляют собой цифровой код т.е. последовательность нулей и единиц, читай TRUE и FALSE логика (Булева алгебра). Вопрос как извлечь этот цифровой код из регистра? Тип данных регистра WORD - выбираем оператор преобразования WORD_TO_BYTE - выбираем функциональный блок UNPACK на выходе которого получаем значение регистра записанное последовательностью битов

Чудеса, вчера пол дня убил с этой проблемой...
и ваш вариант тоже пробовал - ничего не получалось.Сегодня всё пошло спасибо огромное вам!

Коля О
31.07.2012, 13:30
Здравствуйте.Подскажите пожалуйста почему фиксированные в онлайн переменные на входе ФБ не активируют его, то есть не проходят в блок, может я не выполняю какие-то условия? При срабатывании реальных входов блоки работают а в фиксации - нет.

YuriBel
31.07.2012, 15:39
Была такая тема:
http://www.owen.ru/forum/showthread.php?t=8940

Коля О
01.08.2012, 19:32
Спасибо за ссылочку !

Сергей61
03.08.2012, 11:12
Подскажите пожалуйста. Хочу подключиться с помощью Lectus OPS/DDE к плк 150 через rs232 debug. Параметры связи выставляю. В контроллере программу прописываю под модбас слэйв как положено. Но лектус не общается с контроллером. При этом коде сис спокойно связывается по этому же порту. Существуют ли какие нюансы при подключении контроллеров овен к лектусу? Функции чтения записи 3 и 16 или поменять и т.п. Заранее благодарен.

YuriBel
03.08.2012, 14:37
Первое, что приходит в голову, хотя за точность поручиться не могу:
Скорее всего вы используете для связи кабель КС1, который при старте контроллера своей перемычкой заставляет порт работать в режиме связи с Кодесис. Попробуйте либо другой кабель, либо запустите контроллер без кабеля а потом не горячую его подключите, если не боитесь рисковать.

И посмотрите на предмет ASCII-RTU. Повнимательнее почитайте, в обоих ли режимах может работать порт. у каких-то контроллеров на каких-то портах было ограничение. Об этом написано в РЭ на контроллер.

fanfir
13.08.2012, 17:57
Здравствуйте, решил изучать CoDeSys, вот что нашел по нему:
1. Петров И.В. - "Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования"
2. Минаев И. Г., Самойленко В. В. 2009 "Программируемые логические контроллеры"
3. Руководство пользователя по программирование ПЛК в CoDeSys 2.3
Что еще можете посоветовать и как прокомментируете представленные источники?

Flicker
13.08.2012, 18:23
Что еще можете посоветовать и как прокомментируете представленные источники?

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

YuriBel
13.08.2012, 18:23
Еще из комплекта Codesys руководство "Первые шаги в Codesys".
Не поленитесь все примеры не просто причитать по диагонали а набрать в среде разработки ручками, и обратите внимание на то, что автор этих примеров очень удачно комбинирует языки, показывая нам, какой язык для какой локальной задачи лучше подходит.
И еще, если есть опыт программирования на ПК, то нужно всегда помнить разницу в сути работы программ в ПК и ПЛК.
А так для самостоятельного погружения в предмет вполне достаточный список.

fanfir
13.08.2012, 23:36
Кстати каким языком хотите пользоваться? ?
Вот тоже хотел спросить, на какой лучше стоит обращать особое внимание? Какой из языков наиболее востребован, или все зависит от типа решаемых задач?

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

Flicker
14.08.2012, 06:57
Какой из языков наиболее востребован, или все зависит от типа решаемых задач?

Все зависит от типа решаемых задач, когда начинал изучать кодесис тоже задавал такие вопросы. Если с программированием слабо, то что вам по душе язык LD или функциональных блоков. Язык функциональных схем еще применяется в программируемых реле, допустим в реле ОВЕН ПР110, хотя таких реле много.


В продажу идти нет желания, решил попробовать выучить CoDeSys и искать работу.
То что вы будете читать, это конечно теория, и не всегда задачи решать будут с кодесисом, будут и другие требования в аппаратуре и там другое программное обеспечение. Думаю вам стоит начать ОВЕН Лоджик (язык ФБ) хотя бы элементарную задачу написать на сравнение или умножение. В кодесисе я занимался в языке LD, после было пару задач которые решались в программируемых реле, там язык ФБ, мне показалось это проще, сейчас думаю в кодесисе тоже переходить на ФБ, выучить язык высокого уровня нет возможности.

Yegor
14.08.2012, 07:10
Какой из языков наиболее востребован, или все зависит от типа решаемых задач?В целом, да, все зависит от типа решаемых задач. Я вот не пользуюсь IL, LD и FBD. Они мало чего предлагают в сравнении с ST, CFC и SFC.
что именно учить и на чем концентрироваться?Теорию управления и кодирование в функциональных и процедурных языках.

vooodooo22
14.08.2012, 08:35
В целом, да, все зависит от типа решаемых задач. Я вот не пользуюсь IL, LD и FBD. Они мало чего предлагают в сравнении с ST, CFC и SFC.

+



Теорию управления и кодирование в функциональных и процедурных языках.

чутка добавлю от себя: циклограммы, теория алгоритмов, документация ПЛК,HMI и т.д.:)

ssl
14.08.2012, 08:49
Вообще для старта лучше LD и FBD не найти, я думаю с помощью FBD можно реализовать 50%, встающих перед ПЛК задач. (взгляд дилетанта)

kolyan
14.08.2012, 12:05
Вообще для старта лучше LD и FBD не найти, я думаю с помощью FBD можно реализовать 50%, встающих перед ПЛК задач. (взгляд дилетанта)

Если Вас привлекают графические языки, то CFC.
FBD - это язык, похожий на CFC, но в CFC многое улучшено, поэтому не стоит на FBD тратить время.

Yegor
15.08.2012, 11:14
Вообще для старта лучше LD и FBD не найти, я думаю с помощью FBD можно реализовать 50%, встающих перед ПЛК задач. (взгляд дилетанта)С помощью любого Тьюринг-полного языка можно реализовать 100% встающих перед ПЛК задач.

ssl
16.08.2012, 02:25
С помощью любого Тьюринг-полного языка можно реализовать 100% встающих перед ПЛК задач.

Ну тогда вопрос о том какой язык лучше сводится с субъективным предпочтениям программиста.

rovki
16.08.2012, 08:52
Ну тогда вопрос о том какой язык лучше сводится с субъективным предпочтениям программиста.
У каждого субьекта свои субьективные предпочтения ;)

SBER
16.08.2012, 09:14
У плк110-60 485-2 - какой порт?

ssl
16.08.2012, 09:28
У плк110-60 485-2 - какой порт?

Инструкция по эксплуатации 53 страница

vasily-161
16.08.2012, 11:02
Здравствуйте. При эксплуатации плк110-60 возникла проблема следующего рода: при сбое питания, или просто отключении плк от сети, приходится снова компилировать, подключать и создавать загрузочный проект. иначе программу не запустить т. к. даже в dopc explorer -- server items пусто, а должен быть список входов-выходов.
отмечу, что используется 2 плк и теряются оба.. при попытке запустить программу после сбоя в питании появляются ошибки:
иногда такая: could not open port 1210, because it is occupied by another application!
а иногда такая: exception eopc group exception in module xxx.exe at 000ce4f1. eror while creating opc groups.
подскажите пожалуйста как это устранить, а то жить мешает сильно. я совсем не программист, но заниматься этим у нас больше некому

ssl
16.08.2012, 11:10
Здравствуйте. При эксплуатации плк110-60 возникла проблема следующего рода: при сбое питания, или просто отключении плк от сети, приходится снова компилировать, подключать и создавать загрузочный проект. иначе программу не запустить т. к. даже в dopc explorer -- server items пусто, а должен быть список входов-выходов.
отмечу, что используется 2 плк и теряются оба.. при попытке запустить программу после сбоя в питании появляются ошибки:
иногда такая: could not open port 1210, because it is occupied by another application!
а иногда такая: exception eopc group exception in module xxx.exe at 000ce4f1. eror while creating opc groups.
подскажите пожалуйста как это устранить, а то жить мешает сильно. я совсем не программист, но заниматься этим у нас больше некому
Загрузочный проект создаете после того, как загрузили программу в контроллер?

vasily-161
16.08.2012, 11:31
да, после того как подключился и стартовал

SBER
16.08.2012, 12:49
Я про номер порта пни использовании modbus.lib. Где он находится я в курсе.

zaur
16.08.2012, 13:36
Вот есть такие условия: есть массив на N элементов, есть переменная word. Хочу значения из этой переменой перегнать в массив. Можно идти в лоб и делать так

array[1]:=var.1;
array[2]:=var.2;
...
Но это как то слишком прямолинейно и много букв. Как это можно организовать по другому. В идеале хотелось бы легкий и быстрый вариант что-то типа

for i:=1 to 7 by 1 do
array[i]:=var.i; (*жаль так нельзя*)
end_for
Но так нельзя. Может кто-то делал быстрый в написании и редактировании алгоритм. пока то, что мне в голову приходит тоже громоздко, да и редактировать потом неудобно будет.
П.С. Пример приведен лишь для вида того, чего хочется получить.

Валенок
16.08.2012, 20:04
Я про номер порта пни использовании modbus.lib. Где он находится я в курсе.http://www.owen.ru/forum/showthread.php?t=10263&highlight=com2

zaur
17.08.2012, 12:51
BIT_OF_DWORD из oscat.de Вам в помощь, эту функцию можно и через цикл прогнать
Спасибо, точно оно самое. А самое главное на самом деле как все просто оказалось. Алгоритм то не трудный (видимо пора уже в отпуск:cool: ).

service
17.08.2012, 16:34
i1------------------------------------M1
M1
--------------------------------------q1
i1-но контакт
почему в q1 активный если не замкнут i1?
Не могу разобраться с метками.хочу чтобы при выполнении определенного условия метка становилась активной и только тогда выполнялись условия

Slit
18.08.2012, 10:25
Добрый день, мне надо написать функциональный блок, для сравнения переменной получаемой от датчика, с переменной вводимой через СП. Датчик не один, поэтому хотелось бы узнать, как создать универсальный блок, чтобы переменную задовать из "вне", а не в самом блоке?
P.S. Документацию читал, смог задать переменную тока внутри блока, создовать кучу блоков не хотелось бы. Заранее спасибо.

rossmari
20.08.2012, 12:58
В свзяке МПР51 + ПЛК хочу получить показания с термометров подклбченнх к мпр по протоколу modbus
использую конфигурирование codesys, добавляю modbus master, указываю адрес устройства и адреса регистров данных.
При подключении видно что соединился с нужным устройством без ошибок.
Но получаемые данные имеют странный вид (пример: 1.654654е+003).
Смена byte sequence не помогла, смена других парметров приводит к ошибке 81.
Использую тип переменной real input module.
Может кто то сталкивался, подксажите в чем причина такой проблемы?

Провожу проверку, добавляю АС4 и вставляю в usb пк - вижу нормального вида показания температуры.
При конфигурировании конфигруатором ас2-м стоит протокол modbus-rtu
-------
знающие люди говорят формат пакета у АС2-м какой то спецефичный, и описан в рэ. В рэ есть только схемотичное и краткое описание битовой структуры пакета. Где искать полное описание и способ взаимодействия?

Slit
22.08.2012, 10:19
Всем привет. Вопро такой : Я создал Веб визуализацию, подрубил к контроллеру (ПЛК100) модем (ПМ01 с СИМкой со статическим ИП) могу ли я использовать ПЛК как веб сервер дабы заходить со своего планшет ного ПК и просматривать данные отображенные в визуализации? Если нет то как можно это осуществить? Что может выступать как веб сервер? И визуализацию надо будет заливать только на контроллер или на сервер тоже?

Рабиндранат
22.08.2012, 11:16
Всем привет. Вопро такой : Я создал Веб визуализацию, подрубил к контроллеру (ПЛК100) модем (ПМ01 с СИМкой со статическим ИП) могу ли я использовать ПЛК как веб сервер дабы заходить со своего планшет ного ПК и просматривать данные отображенные в визуализации? Если нет то как можно это осуществить? Что может выступать как веб сервер? И визуализацию надо будет заливать только на контроллер или на сервер тоже?

А можно поподробней по поводу визуализации? Как Вы ее написали? Работает она у Вас без модема?

Slit
22.08.2012, 12:19
А можно поподробней по поводу визуализации? Как Вы ее написали? Работает она у Вас без модема?
Без модема работает, да и с модемом работает (когда подключаюсь к контроллеру через USB). Я удаленно связать не могу наладить . А по поводу написания, то написана визуализация по мануалу (который лежал на диске CoDeSys_Visu_V23_RU ). Или вас интересуют элементы в визуализации? Если так, то там 3 таблицы и график (ничего особенного и из ряда вон выходящего).

Николаев Андрей
22.08.2012, 13:07
В ПЛК100 штатные средства веб визуализации не поддержаны.
Пример создания самостоятельного Web сервера на форуме выложен.

Slit
22.08.2012, 13:27
В ПЛК100 штатные средства веб визуализации не поддержаны.
Пример создания самостоятельного Web сервера на форуме выложен.

А в каком разделе? А лудше бы ссылочку прямую, а то в поиске не находит, а вручную искать недели не хватит :-)

Николаев Андрей
22.08.2012, 14:44
http://www.owen.ru/forum/showthread.php?t=1719&highlight=%F1%E5%F0%E2%E5%F0
http://www.owen.ru/forum/showthread.php?t=592&highlight=%F1%E5%F0%E2%E5%F0

max_etf
24.08.2012, 11:51
Доброго утра, коллеги ! Помогите с решением простой задачки. Имеется проект по системе водоподготовки основанный на ПР и сп270.. Правда в наличии у меня есть сп207 и плк-100. ПР+допы я заказал еще в понедельник, но доставка буксует.. в общем нету у меня сейчас ПР, а в выходные нужно презентовать демо-стенд. Поэтому адаптирую логику ПР к логике ПЛК. За вчерашний вечер мне удалось "подружить" сп270 и плк100 в рамках тех задач, которые описаны в проекте. Но я не смог реализовать простое решение: генератор импульсов. Поиск не дал результатов. Суть задачи такова: нужно чтобы ПЛК-100-Р-М на один выход выдавал импульсы фиксированной длительности, но с паузой(или с частотой), согласно пользовательских настроек (юзер с сп207 передает в ПЛК переменную - какую указал - с такой частотой импульсы и поступают).
Вообще суть это генератора - эмуляция импульсного расходомера. Насосы получив импульс будут дозировать реагенты. PS
В OWEN Logic эта задача изящно решалась при помощи элемента BLINK. Вот аналог этого blink'а мне и нужен..

Валенок
24.08.2012, 11:59
В OWEN Logic эта задача изящно решалась при помощи элемента BLINK. Вот аналог этого blink'а мне и нужен..
Не поверите - это ФБ BLINK.
Библиотека Util.lib

kosmas
28.08.2012, 16:23
Как обычно, у новеньких, глупый вопрос - есть код


WHILE DI2 DO
temp_a := 50;
IF temp_a <= 1000 THEN
temp_a := temp_a + 50;
AO1 := temp_a;
ELSE
temp_a := temp_a -50;
AO1 := temp_a;
END_IF
END_WHILE


Т.е. пока жмем кнопку DI2, выход на АО1 меняется от 50 до 1000 и обратно.

КДС говорит, что у меня "вечный" цикл. Как правильно?

kosmas
28.08.2012, 17:40
:) правильно Вам говорит КДС, контроллеры с таким значением для циклов долго не работают, а уходят в стоп. Почему просто не использовать IF ... THEN

Что-то я недопонял... А как же делать-то без IF ???

lara197a
28.08.2012, 22:32
Если хотите сделать плавное включение, то лучше используйте счетчик+ генератор.

ПРОЕКТ-П
29.08.2012, 18:05
Здравствуйте.
Подскажите пожалуйста ответ на следующий вопрос.
В PLC Configuration я добавил модуль Modbus(Master) в этом модуле, заменяю элемент Debug-RS232 на модем. Как из программы изменять параметры модема? Например, телефонный номер по которому идет дозвон.
Вообще вопрос касается всех модулей подключаемых в ПЛК через конфигуратор ПЛК, имеется ли возможность программно менять параметры модулей?
Например, вводить IP адрес и порт при настройке соединения через Ethernet (TCP)

Yegor
30.08.2012, 20:01
имеется ли возможность программно менять параметры модулей?Вообще нет. Но конкретно с эзернетом можно переписать один файлик на ПЛК. Это «запрещённый приём», но если вам совсем невмоготу, то я вспомню, что это за файлик.

Kirill
31.08.2012, 18:05
Здравствуйте, коллеги!

Пролистал несколько последних сообщений в этой теме.
После оооооочень долгого отсутствия на форуме.
Заметил, что необходимость в достаточно подробном учебнике для начинающих по CoDeSys по прежнему велика.
А мы-то надеялись, что если сделать достаточное количество примеров, все будет понятно..
Ладно, идея создать такой учебник очень долго откладывалась "на потом". Тем не менее мы все-таки сделали первую попытку написать такой учебник по материалам семинаров, которые проводит Учебный центр ОВЕН.
Лучше поздно, чем никогда)
Учебник сделан в виде рассылки на эл. почту. Для того, чтобы добавления и исправления можно было автоматически пересылать всем тем, кто подписался.
Ну и для того, чтобы обучение шло последовательно. Это в том числе попытка сделать удаленный учебный курс по CoDeSys для начинающих. Сейчас в учебнике две больших главы, они придут вам не сразу, а по очереди. На подходе третья глава. Работа над учебником все еще в процессе)


Кому интересно - присоединяйтесь)

www.кодесис.рф (http://www.кодесис.рф)

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

Andrei Z
07.09.2012, 18:20
необходимость в достаточно подробном учебнике для начинающих по CoDeSys по прежнему велика.
А мы-то надеялись, что если сделать достаточное количество примеров, все будет понятно..


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

Andrei Z
07.09.2012, 18:29
Ну и для того, чтобы обучение шло последовательно. Это в том числе попытка сделать удаленный учебный курс по CoDeSys для начинающих. Сейчас в учебнике две больших главы, они придут вам не сразу, а по очереди.

Как подписаться чтобы рассыла была так и не понял

Andrei Z
07.09.2012, 19:25
Читаю книгу про кудесис, очень нравиться как подробно можно сказать в картинках как журнал мурзилка.. как раз подробно то что надо.. Сразу захотелось купить ПЛК и навоять что то )))) :D

Andrei Z
07.09.2012, 20:01
Цитата из книги - "Вероятнее всего, Вы всё сделаете правильно, мы верим что эту книгу, читают люди способные, внимательные и понятливые. Дорогой читатель, Вы ведь именно такой, правда?"

ДААААА...
Мне очень нравится, читаю с улыбкой неспеша, очень доходчиво, даже простые привычные моменты например как "Сохранить как" и то воспринимаются легко и нет отторжения что нудно это изучать.
Если всё дальше будет в таком русле изучение-обучение... То при слове Кудесис меня уже не будет передёргивать. Надеюсь мне помежет открыть дверцу в мир ПЛК.
Радуюсь как ребёнок, уж простите что делюсь этим. Надо Валерию с Украины маячок послать что появилось такое обучение

askaev
12.09.2012, 14:32
вопрос по ПЛК-100: какое кол-во переменных (приборов, подключенных к различным модулям, типа МДВВ, МВА) может обработать ПЛК-100 без подтормаживаний?

К примеру: на клапан нужно 2 переменных BOOL -- одна будет говорить ему открыться (true) или закрыться (false), а вторая спрашивать с него подтверждения выполнения команды -- открыт (true) он или закрыт (false); для мотора нужна одна переменная BOOL -- она будет говорить ему запуститься (true) или выключиться (false).

askaev
12.09.2012, 15:35
Можно узнать, так же подробно, что является подтормаживанием?

ну... к примеру долгая реакция на нажатие кнопки на щите. Т.е при подтормаживании, что бы контроллер принял нажатие этой кнопки и приступил к обработке, нужно кнопку подержать 2-3 секунды, а не просто её ткнуть и отпустить (0,25...0,5 сек); либо же бывает так, что цикл напишешь с генератором, что бы реле щёлкало туда-сюда с периодом 2-3 сек, а в итоге -- то нормально отщёлкает, то в один из циклов период может затянуться раза в 2-3 (т.е щёлк и тишина.... а потом снова щёлк и дальше снова нормально щёлк-щёлк, щёлк-щёлк :) ). Вот.

Валенок
12.09.2012, 18:32
какое кол-во переменных (приборов, подключенных к различным модулям, типа МДВВ, МВА) может обработать ПЛК-100 без подтормаживаний.....(0,25...0,5 сек);
Штук так 300

Andrei Z
13.09.2012, 20:36
Хочу попросить ассов програмирования ПЛК, думаю им это не трудно сделать
Имеется баня в обслуживани.. и две парилки мужская и Женская. по 18 кВт. Приобрёл трёхфазное твердотельное реле с управлением на 220 В.
Думаю приобрести ПЛК 73 для управления, но пока обучаюсь по книгам кудесис которую выпускать Овен стал в лице Кирилла Гайнутдинова. Немогли бы Вы (опытные товарищи) написать програмку.. простую на мой взгляд для знающих. чтобы управлять двумя парилками по температуре воздуха в парилках по уставкам с гистерезисом например 5 градусов (тоесть если оператор выставит 100 градусов то парилка будет выключаться при 102.5 и включаться при 97.5. На экран вывести первая строчка температура в парилке, вторая уставка в ней. третья строчка температура в другой парилке и четвёртая уставка её. Как можно проще пока для начинающего. В дальнейшем заведу уже сам когда научусь, например график в субботу в пять часов утра включить на прогрев. Чтобы оператор не приходил так рано, так как 5 часов прогревает парилку.
Спасибо заранее.

drvlas
13.09.2012, 20:55
и две парилки мужская и ЖенскаяИспытания на объекте будут?

drvlas
13.09.2012, 21:06
у кого записываться?
Остались только места на мужскую парилку...

Andrei Z
13.09.2012, 21:12
:D Вот всё хиханьки Вам
А я сам парюсь с этими парилками. :) сейчас стоит автоматика заводская старая, управляет температурой резистром, только условно, нужно оператору переодически бегать через душевую посмотреть сколько градусов. Через женскую душевую просит касира посмотерть сколько градусов в парилке :p ))) предвижу улыбки почему просит а не сам выполняет свои обязанности)))

пробовать буду конечно на объекте, баня у нас в ЖКХ находиться местная муниципальная. Только по выходным работает. так что ничего страшного будет. Темболее буду переносить управление с кассы в помещение где оператор сидит, так что паралельно будет. в случае чего пока поработает на старом оборудовании.)))

vlad72
14.09.2012, 03:17
очень простой вопрос: при откл / вкл питания пропадает связь ПЛК - МДВВ. Может ли это быть связано со "сдохшим" аккумулятором?

Вопрос второй: В ПЛК100 тип (ну или марка?) аккумулятора -
LIR 2477, в ПЛК150 такой же???
Господа не смейтесь, плиз ...нету у нас в городе радиорынков
вАаЩе, поэтому выпаивать и бежать как Шурик к дилеру не могу, только заказать..наверное....

Рамиль Ш
14.09.2012, 19:15
Привет, участникам форума! У меня вопрос! Есть ли в CoDeSys на языке программирования CFC функция программирования таймера?
И еще вопрос. Я начал модернизировать станок - пилу. Ранее в нем стоял ПЛК Mitsubishi. Весной он сгорел.ПЛК этой фирмы очень дорогие по цене. И мы решили осваивать Овен.Для эксперимента я составил программу для светофора на языке LD и загрузил в ПЛК. Все по инструкции. Но после загрузки ПЛК ничего не переключается. Может я неправильно назначаю глобальные переменные? И влияет ли цифра в графе <частота опроса> на работу ПЛК?

Валенок
14.09.2012, 20:52
Есть.
Может и неправильно назначаете глобальные переменные.
Цифры могут на что угодно влиять. А где эта графа ?

Рамиль Ш
14.09.2012, 21:20
Когда открываете конфигурацию ПЛК, справа открывается окно. Там есть настройки и параметры модуля. Если открыть параметры модуля, есть три строчки мин цикл
макс цикл
Back up working time
Я считал, что это настройки частоты опроса. Может я ошибаюсь?

Валенок
14.09.2012, 22:02
Частота основного рабочего цикла. Косвенно имеет отношение к опросам.
Back up working time - длительность агонии без питания (сек)
На диске к ПЛК - есть рук-во по конфигурированию.

PS
Поверьте - Вам это пока не нужно (и после - редко-редко) Изучайте синтаксис, библиотеки

Рамиль Ш
15.09.2012, 09:06
У меня сейчас стоит задача.Создать программу для работы станка.Но есть затруднение в одном месте. Сейчас поясню. На двух больших дисках стоит полотно-пила. Один диск ведущий , другой ведомый. Нужно, чтобы при поломке полотна , то есть при остановке ведомого диска станок выключился. Под диском закреплен бесконтактный датчик. А на диске по кругу есть шесть отверстий.При вращении диска эти отверстия проезжают возле датчика.Тем самым формируются импульсы, которые идут на ПЛК. Период следования примерно 300 миллисекунд. Нужно запрограммировать таймер на языке CFC, чтобы по истечении 1 сек, если не приходят импульсы, то выход ПЛК переходил на ноль, то есть отключал Исполнительное устройство. На языке LD мне удалось с этим справится.Сейчас меня заинтересовал язык CFC. Кажется он более интересен.
Спасибо заранее.

Валенок
15.09.2012, 12:01
Да тоже самое.
Берете ton, in := старт и (датчик не шевелится). Старт и нет ton.q => выход

gndh
16.09.2012, 16:06
мне прощет нарисовать схему приложение.
Если на I1 не шевелится то на Q1 через секнду авария

Валенок
16.09.2012, 16:13
Когда просто выключен - тоже не шевелится

Рамиль Ш
16.09.2012, 19:19
Что-то не получается. Хорошо было бы увидеть на примере?! И еще один момент. При включении нужно заблокировать эту систему на секунду, чтобы диск успел раскрутиться.

Рамиль Ш
16.09.2012, 19:21
нужно учитывать то, что датчик может остановиться и в единичном состоянии , и в нулевом.

Flicker
16.09.2012, 19:24
При включении нужно заблокировать эту систему на секунду, чтобы диск успел раскрутиться. Это называется поставить задержку на вкл это таймер TON, напишите полностью тех.задание и принцип работы включая все аварийные режимы и способы управления установкой!

Валенок
16.09.2012, 22:42
датчик может остановиться и в единичном состоянии , и в нулевом.
Отслеживаются просто шевеления - поэтому пофиг

Flicker
17.09.2012, 06:58
У меня сейчас стоит задача.Создать программу для работы станка.Но есть затруднение в одном месте. Сейчас поясню. На двух больших дисках стоит полотно-пила. Один диск ведущий , другой ведомый. Нужно, чтобы при поломке полотна , то есть при остановке ведомого диска станок выключился. Под диском закреплен бесконтактный датчик. А на диске по кругу есть шесть отверстий.При вращении диска эти отверстия проезжают возле датчика.Тем самым формируются импульсы, которые идут на ПЛК. Период следования примерно 300 миллисекунд. Нужно запрограммировать таймер на языке CFC, чтобы по истечении 1 сек, если не приходят импульсы, то выход ПЛК переходил на ноль, то есть отключал исполнительное устройство.

Зачем для такой задачи использовать ПЛК, 1 вход и 1 выход, можно взять вариант подешевле ОВЕН ПР110 или простое реле времени, допустим ОВЕН УТ24. Реализация в языке CFC во вложение, это как вариант.

Рамиль Ш
17.09.2012, 18:24
Я взял за основу ПЛК 110-32.У него 18 входов и все задействованы в станке. Я описал только одну из задач для целой программы. В целом программа громоздкая и описать все случаи работы включая аварийные ситуации затруднительно. Не хватит даже трех страниц. Сам станок является автоматом, который режет заготовки. В нем в качестве исполнительных устройств используются шесть соленоидов на золотниках переключения гидросистемы, три силовых пускателя. И еще несколько индикаторных ламп.

Рамиль Ш
17.09.2012, 18:28
Спасибо за схемку. Сейчас буду её изучать и попробую её испытать в режиме эмуляции.

ssl
19.09.2012, 05:16
В приведенной схеме остановка ведущего диска призойдет, если с датчика сигнал TRUE будет проходить дольше чем 350 мс. Насколько я понимаю, сигнал TRUE возникает если прорезь диска находиться напротив датчика, тогда ведущий диск остановиться только в случае, если ведомый диск остановиться прорезью напротив датчика. Для корректной работы необходимо инвертировать вход Ton2, тогда таймер будет отслеживать не время подачи импульсов, а интервал между ними.

Рамиль Ш
19.09.2012, 18:56
Как можно создать простейший генератор в CFC ?

Рамиль Ш
19.09.2012, 21:01
Это наверное в менеджере библиотек? Что-то я там не нашел. Я как новичок не понимаю некоторые термины.

Flicker
19.09.2012, 21:05
Как можно создать простейший генератор в CFC ?

Генератор какого характера? можно сделать свой функциональный блок на языке LD или на любом другом и добавить его с проект CFC ;)

Рамиль Ш
19.09.2012, 21:41
На языке LD я создал генератор с периодом следования импульсов 300мсек. Сигнал с этого генератора завел на вход таймера, который следит за наличием импульсов с датчика вращения диска станка пилы. Тем самым я имитирую работу в режиме эмуляции. Хотел этот же принцип опробовать на языке CFC. Пока не получается. Функциональный блок я создал на языке LD. А как и где его сохранить я не знаю, чтобы потом им воспользоваться.

Flicker
19.09.2012, 21:48
А как и где его сохранить я не знаю, чтобы потом им воспользоваться.

Возможно вам подойдет генератор BLINK, на языке CFC добавьте новый функциональный блок и напишите BLINK. А свой когда создаете щелкаете слева где название блока правой кнопкой мыши и выбираете создать шаблон. После чего переходите в свою программу и добавляете новой функциональный блок и пишите название своего созданного блока. Только в своем блоке должны объявлять переменные входа как input и так далее...

Рамиль Ш
19.09.2012, 22:17
[QUOTE=capzap;91213]ну посмотрите видео, может поможет[/
Спасибо за видео! Сейчас понял! За ссылку тоже спасибо! скачал и добавил в библиотеку.

Рамиль Ш
19.09.2012, 22:19
Возможно вам подойдет генератор BLINK, на языке CFC добавьте новый функциональный блок и напишите BLINK. А свой когда создаете щелкаете слева где название блока правой кнопкой мыши и выбираете создать шаблон. После чего переходите в свою программу и добавляете новой функциональный блок и пишите название своего созданного блока. Только в своем блоке должны объявлять переменные входа как input и так далее...




С Blinkom тоже поэкспериментирую.

Рамиль Ш
20.09.2012, 05:12
[QUOTE=Рамиль Ш;91218]
Вам же из неё понадобится всего одно ПОУ, лучше открыть библиотеку и перенести только нужное, потому как добавив её Вы можете выйти за лимит ограничения на количество ПОУ





Я этого не знали добавил. Ну ничего ,дело исправимое.

danilsgk
20.09.2012, 21:24
Возможно ли быстрые входы ПЛК110 использовать как обычные?

Николаев Андрей
20.09.2012, 21:31
Возможно. Не забудьте фильтр поставить.

gndh
22.09.2012, 15:54
Пардон генератор чего

Рамиль Ш
22.09.2012, 22:39
Пардон генератор чего

Генератор импульсов.

Flicker
22.09.2012, 22:40
Генератор импульсов.

Blink идеально подойдет) :cool:

Дмитрий Ильин
23.09.2012, 16:03
Здравствуйте. Пытаюсь создать функцию для отслеживания изменения значения переменной. Подскажите где ошибка. Тот же код в виде функционального блока работает.


FUNCTION StopCheck : BOOL
VAR_INPUT
in:WORD;
END_VAR
VAR
test: WORD;
T1:TOF;
TR1:R_TRIG;
END_VAR

T1(IN:=NOT T1.Q,pt:=t#500ms);
TR1(CLK:=T1.Q);
IF TR1.Q THEN
test:=in;
END_IF
IF NOT T1.Q THEN
IF test=in THEN
StopCheck:=TRUE;
ELSE
StopCheck:=FALSE;
END_IF
END_IF

Дмитрий Ильин
23.09.2012, 16:21
Понятно, спасибо.

Sergey1024
24.09.2012, 22:09
Приветствую всех!

С CDS до этого момента не сталкивался, нужно сделать программу, которая считывает с нескольких приборов данные по одному порту, преобразует и отдает данные по другому порту. Все общение по modbus rtu. Реализовать надо на ПЛК-73, но для отладки думал использовать PLCWinNT 2.4.

Вопрос: можно ли заставить PLCWinNT работать с последовательными портами на компьютере? Имеются пары виртуальных портов COM1-COM5 и COM2-COM6, можно ли заставить работать PLCWinNT c COM1 и COM2?

Николаев Андрей
24.09.2012, 23:33
Добрый вечер.

По работе с PLCWinNT я бы поспрошал тут:
http://forum-ru.3s-software.com/index.php
Ребята более компетентны.

kgsh82
25.09.2012, 10:26
Приветствую всех!

С CDS до этого момента не сталкивался, нужно сделать программу, которая считывает с нескольких приборов данные по одному порту, преобразует и отдает данные по другому порту. Все общение по modbus rtu. Реализовать надо на ПЛК-73, но для отладки думал использовать PLCWinNT 2.4.

Вопрос: можно ли заставить PLCWinNT работать с последовательными портами на компьютере? Имеются пары виртуальных портов COM1-COM5 и COM2-COM6, можно ли заставить работать PLCWinNT c COM1 и COM2?

А зачем ПЛК73? Надо что-то отображать на ЖКИ? Или привлекла стоимость? 73 сильно отличается от остальных....урезан сильно. Да и не ясна работоспособность интерфейсных плат, допустим ПИ73-5 - не работает второй порт (ошибка в прошивке). Идеально бы подошел ПЛК304

Николаев Андрей
25.09.2012, 11:00
Так. Осторожней с выражениями :)
ПИ73 вполне работоспособен. Второй порт на данный момент работает только с адресом 16. Но отлично работает.

Функционал ПЛК73 не ограничен, а не избыточен. Для задач работы с интерфейсами действительно лучше коммуникационные контроллеры использовать.

kgsh82
25.09.2012, 12:43
Так. Осторожней с выражениями :)
ПИ73 вполне работоспособен. Второй порт на данный момент работает только с адресом 16. Но отлично работает.

Функционал ПЛК73 не ограничен, а не избыточен. Для задач работы с интерфейсами действительно лучше коммуникационные контроллеры использовать.

ИМХО работа с одним адресом - не работа. Кстати ПИ73-4 - работает но не через конфигурацию. Остальное не пробовал

Николаев Андрей
25.09.2012, 22:47
ИМХО работа с одним адресом - не работа. Кстати ПИ73-4 - работает но не через конфигурацию. Остальное не пробовал

Полностью поддерживаю. Наш программист уже разбирается с этим.
Работу через конфигурацию в ПЛК63 или ПЛК73 реализовать проблематично при заложенных в него ресурсах.

Рамиль Ш
26.09.2012, 18:27
Нужна помощь специалиста. Никак не получается оживить ПЛК. Я создал программу для станка, но прежде чем загрузить решил проверить ПЛК. (ДО этого я уже писал об этом.) Простая программа с одним входом и одним выходом успешно загрузилась. Но ПЛК не работает. Хотя бы щелчки реле должны были быть слышны. В режиме онлаин при подаче сигнала на вход, квадратик, который стоит в строке INPUT окрашивается в синий цвет, а контакт в схеме не меняет своего состояния. Ну и соответственно и выход не меняется. А если щелкнуть по квадратику в строке OUTPUT , то он окрашивается в синий цвет. И слышен при этом щелчок реле.Связь с ПЛК нормальная. Чего я еще упустил?

Flicker
26.09.2012, 19:09
Чего я еще упустил?

Тоже с этим столкнулся, назначил переменные в конфигураторе - не работает, оказывается нужно адреса прописывать в объявление переменных, для удобства сделайте объявление таблицей. Адрес входа/выхода писать так AT%IB.... или AT%QX.... :cool:

Andrei Z
26.09.2012, 20:17
На сайте кодесис.ру, сотрудники компании ОВЕН, выложили пока небольшие видео уроки по началу изучения языка програмирования Кодесис. И там есть рассказ как объявляються переменные ))))
Рамиль Ш зайдите на сайт это, прям набрав русскими Кодесис.ру , и в графе найти задайте в поиск слово - "видео" непомню точно в какой части, или главе.. но промотать быстренько можно все.

Рамиль Ш
26.09.2012, 20:21
На сайте кодесис.ру, сотрудники компании ОВЕН, выложили пока небольшие видео уроки по началу изучения языка програмирования Кодесис. И там есть рассказ как объявляються переменные ))))
Рамиль Ш зайдите на сайт это, прям набрав русскими Кодесис.ру , и в графе найти задайте в поиск слово - "видео" непомню точно в какой части, или главе.. но промотать быстренько можно все.

Смотрел я это видео. Тоже самое проделал один в один. Но ничего не получилось.

Andrei Z
26.09.2012, 20:24
а можете выложить саму програмку эту простенькую, и сказать какой плк Вы забивали . Мне интересно как новичку в этих вопросах

Рамиль Ш
26.09.2012, 20:24
Тоже с этим столкнулся, назначил переменные в конфигураторе - не работает, оказывается нужно адреса прописывать в объявление переменных, для удобства сделайте объявление таблицей. Адрес входа/выхода писать так AT%IB.... или AT%QX.... :cool:


Простите меня чайника. Не совсем понял. Не могли бы вы указать путь к обьявлению переменных.Как я понял это отличается от переменных в конфигураторе?

Рамиль Ш
26.09.2012, 20:28
а можете выложить саму програмку эту простенькую, и сказать какой плк Вы забивали . Мне интересно как новичку в этих вопросах


Попробую, если получится выложить программку. Я как пользователь интернета никудышный. Там есть и визуализация. Наверное нужно сначала сжать в ZIP ?

Andrei Z
26.09.2012, 20:31
Попробую, если получится выложить программку. Я как пользователь интернета никудышный. Там есть и визуализация. Наверное нужно сначала сжать в ZIP ?
:D признаться я сам редко так пользуюсь .. но судя по тому как здесь все выкладывают то да)))) сжать на компе сначала а потом вложить файл в сообщение )))) этот ZIP

Рамиль Ш
26.09.2012, 21:00
Вот такая программа. Может и с ошибками?

Andrei Z
26.09.2012, 21:11
Нууу.. Вы уже продвинуто по моей точке зрения, пользуетесь Кодесисом. Поэтому я тут точно не помощиник, у меня пишет нет библиотек 3 из 7.. это раз. И во вторых почему в Настройках целевой платформы не настроена Конфигурация на конкретный ПЛК?

Flicker
26.09.2012, 21:13
Простите меня чайника. Не совсем понял. Не могли бы вы указать путь к обьявлению переменных.Как я понял это отличается от переменных в конфигураторе?

Посмотрите мой скриншот вашей программы, я только пару переменных переименовал I1,I2,I3(поставьте объявление переменных таблицей, так сразу будет понятно) Переменные входов должны объявлены в разделе VAR_INPUT, выходов в соответствующем VAR_OUTPUT

Рамиль Ш
26.09.2012, 22:15
Посмотрите мой скриншот вашей программы, я только пару переменных переименовал I1,I2,I3(поставьте объявление переменных таблицей, так сразу будет понятно) Переменные входов должны объявлены в разделе VAR_INPUT, выходов в соответствующем VAR_OUTPUT

А почему именно I1, I2, I3 ? Или можно и другими буквами? И еще вопрос: Всё это вручную забивать?

Flicker
26.09.2012, 22:18
А почему именно I1, I2, I3? Или можно и другими буквами? И еще вопрос: Всё это вручную забивать?
I1, I2, I3 --- это я так назвал, а вы можете оставить ваши, но только вам их следует перенести в раздел VAR_INPUT или VAR_OUTPUT. Адреса вручную забивать :)

Рамиль Ш
26.09.2012, 22:21
Посмотрите мой скриншот вашей программы, я только пару переменных переименовал I1,I2,I3(поставьте объявление переменных таблицей, так сразу будет понятно) Переменные входов должны объявлены в разделе VAR_INPUT, выходов в соответствующем VAR_OUTPUT



Не доходит до меня дурака. Не могли бы вы присвоить имена переменных этой программе. Может так понятней будет?

Рамиль Ш
26.09.2012, 22:25
Нууу.. Вы уже продвинуто по моей точке зрения, пользуетесь Кодесисом. Поэтому я тут точно не помощиник, у меня пишет нет библиотек 3 из 7.. это раз. И во вторых почему в Настройках целевой платформы не настроена Конфигурация на конкретный ПЛК?


Программа сделана в XP. Когда я её открываю в WINDOWS 7 тоже так же пишет. Может библиотеки добавить нужно? А платформу кажется можно настроить в Ресурсах- настройки целевой платформы.

Flicker
26.09.2012, 22:34
Не доходит до меня дурака. Не могли бы вы присвоить имена переменных этой программе. Может так понятней будет?

переменная x1 у вас как локальная, ее нужно перенести в VAR_INPUT. это можно сразу делать в окне объявление переменных. Также там можно указать физический адрес контроллера(это не всегда удобно). Также переменная y1 должна быть перенесена в VAR_OUT. Я обычно делаю так: удаляю переменную в таблице переменных, потом нахожу этот элемент стираю название и пишу заново, но уже выбираю каком разделе она должна быть(как на рисунке). Адреса входов и выходов смотрю в конфигураторе) Программу загрузил и изменил, попробуйте ее отправить прямо на ПЛК110-32 и проверить работу, задействован первый вход и первый выход. Потом отпишитесь:).

YuriBel
26.09.2012, 22:42
Простите великодушно, но не могу не вмешаться, так как проскальзывают не совсем верные утверждения.
Итак,
Рамиль, вы выложили пример некой пограммы, которая как-то работает, и что в ней правильно, а что нет, кроме вас никто не знает. Одно маленькое НО. В ней не указана целевая платформа, поэтому она годится только для работы в эмуляторе.

Кроме того, вы жаловались, что сделали простую программу с одним входом и одним выходом и она не работает. Вот ее и выкладывайте, будем начинать с простого.
Теперь о неверных или частично неверных утверждениях:
Flicker говорит о том, что привязки переменных к аппаратным входам и выходам нужно делать путем явного указания AT в разделе описания переменных. Можно делать так, а можно и по другому. Но в любом случае нужно выбрать целевую платформу и тогда в окне конфигурации ПЛК появится выбранный вами контроллер с его набором входов и выходов с конкретными обозначениями, которые вы можете прописывать после AT%.

Второй способ привязки переменных к физическим входам и выходам состоит в их внесении в конфигурацию. Об этом достаточно подробно рассказано в книге, которая начинает рождаться на сайте кодесис.рф усилиями Кирилла Гайнутдинова, за что ему огромное спасибо скажут многие, кто эту книгу прчитает. Так вот, если в конфирурации выделить один из входов или выходов, и щелкнуть по нему левой клавишей мышки, откроется квадратик для внесения имени переменной, которая будет связана с этим входом или выходом. НО (большое и жирное НО, потому что на эти грабли наступают почти все) эта переменная не должна дублироваться вами в программе. То есть вручную ее не нужно объявлять ни в разделе локальных переменных, ни в разделе глобальных.
Она сама попадет куда надо и будет иметь характер глобальной.
И теперь, если вы хотите ее использовать в программе, просто указывайте ее имя, и все будет работать. А чтобы не делать синтаксческих ошибок, удобно пользоваться ассистентом ввода. Выделяете в программе имя элемента, нажимаете А2 и получаете список всех доступных имен. Там в разделе глобальных переменных уже будет то имя, которое вы присвоили в входу в конфигурации. БОЛЬШЕЕГО НИГДЕ ОБЪЯВЛЯТЬ НЕ НУЖНО, В ПРОТИВНОМ СЛУЧАЕ, ИМЯ, ОБЪЯВЛЕННОЕ В ДРУГОМ МЕСТЕ, ПЕРЕОПРЕДЕЛИТ ЕГО, И СВЯЗЬ С ВХОДОМ ПОТЕРЯЕТСЯ.

Второе неверное утверждение Flickeraкасается Var_Input b Var_Output.
Эты типы переменных предназначены не для привязки к входам и выходам контроллера, а для создания функциональных блоков. Когда вы пишете не основную программу, а свой собственный функциональный блок, то там они реально нужны. Еу пкркменные, которые будут входами вашего функционального блока, нужно объявлять как var_Input, те, которые будут выходами - как Var_Output. Переменные для внутрениих нужд - как обычные var. А для связи с физическими выходами и входами этого вовсе не требуется. Для этого требуется ИЛИ прописать их в конфигурации ИЛИ прописать их в разделе описания переменных (в том числе при помощи окна автоопределения).

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

s3rjke
27.09.2012, 12:22
Добрый день. В работе в среде CoDeSyS я новичок, да и в программировании тоже особо не силен.

Подскажите, пожалуйста, как преобразовать два идущих подряд элемента массива ARRAY [0..255] OF BYTE в одно значение типа WORD (или INT)? Массив играет роль буфера, откуда выполняется чтение/запись при работе по modbus RTU. Вроде, что-то в него записывается, а понять, что именно, не получается. :-) Т.к. чтение-запись идут в виде регистров, а не байтов.

s3rjke
27.09.2012, 13:03
Вариантов как это реализовать достаточно. Вот один из них:
Создаете массив из 128 инт-ов, объявляете указатель на него, а в программе присваиваете указателю указатель на байтовый массив

Мысль теоретически понятна... Спасибо!

*уходит смотреть, как работать с указателями*

Andrei Z
27.09.2012, 13:17
маленькое НО. В ней не указана целевая платформа, поэтому она годится только для работы в эмуляторе.



Вот и я об этом говорил, но не мог настоять потому как сам знания эти получил только из книги. Причём в примере был выложен язык LD а не сфк. как изучали в книге. :) но я порадовался что уже немножко но знаю о чём идёт речь

s3rjke
27.09.2012, 13:21
Вариантов как это реализовать достаточно. Вот один из них:
Создаете массив из 128 инт-ов, объявляете указатель на него, а в программе присваиваете указателю указатель на байтовый массив

Все вроде получилось. :-) Может, подскажете еще, можно ли как-нибудь сделать очистку буферного массива? Чтобы он заполнялся при чтении-записи, а потом очищался бы. Чтобы всякой фигней левой, хранящейся в нем, не смущать. Я в том, плане, может есть какая стандартный метод или встроенная функция, без придумывания своих велосипедов (типа заполениня его нулями в цикле, перед тем, как делать чтение-запись регистров слэйвов и т.п.).

UPD: И еще такой вопрос, значения-то я получил в формате INT. Устройство -- ТРМ202. Только значение немного не похоже на значение температуры на экранчике самого прибора. В инструкции к ТРМке сказано, что по адресу 0x0001 лежит значение температуры по каналу 1. Однако, то, что я вижу в INT-массиве, немного не сходится с тем, что показывает ТРМка. Может, надо еще какие преобразования выполнять?

42ia
27.09.2012, 14:06
Все вроде получилось. :-) Может, подскажете еще, можно ли как-нибудь сделать очистку буферного массива? Чтобы он заполнялся при чтении-записи, а потом очищался бы. Чтобы всякой фигней левой, хранящейся в нем, не смущать. Я в том, плане, может есть какая стандартный метод или встроенная функция, без придумывания своих велосипедов (типа заполениня его нулями в цикле, перед тем, как делать чтение-запись регистров слэйвов и т.п.).

Кажется есть такая функция SysMemSet из библиотеки SysLibMem
Инициализирует блок памяти указанным значением. Как аргументы принимает адрес блока памяти, его размер, и значение для инициализации, например 0.