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

RV9WFJ
10.03.2014, 19:38
Вы веткой форума ошиблись.
По вашему вопросу - вы сами задаете в настройках нижнюю и верхнюю границу, что туда напишете то и будет показывать.

Gjma
10.03.2014, 21:29
Здравствуйте, прошу помощи у знатоков. Нужно, чтобы переменная b была равна TRUE 10сек, затем переходила в FALSE на 5 сек, и так по циклу. У мну получилось вот это (во вложении). Но загвозка в том, что цикл должен начинаться с b:=TRUE, а не с b:=FALSE.

Валенок
10.03.2014, 21:33
util.lib/blink

Gjma
10.03.2014, 21:58
Спасибо, добрый человек!

Скаут
11.03.2014, 15:52
Добрый день,
Подскажите, пожалуйста, на контроллере ПЛК110-30 какую максимальную частоту меандра можно получить на быстрых дискретных выходах?
Из описания не совсем понял. Время переключения из 0 в 1 и обратно 0,02 мс. при этом мин. цикл программы 250 мкс.

Zovar
12.03.2014, 13:36
Ребята!!! Помогите разобраться пожалуйста! Только-только начал изучать Codesys, представляю скриншот программы, вопросы следующие:
DI1 - включение попеременной работы "кнопок включения насосов 1 и 2"
даю TRUE на DI1 - все в норме, цикл идет как надо, насосы работают попеременно. даю FALSE на DI1 - цикл продолжается. Как бороться с этим???? Мне нужно чтоб насосы отключились (цикл прекратился). Я понимаю, что причина в том что нижний триггер подает 1 на блок OR, тем самым цикл продолжает работать. Я не знаю какой другой блок можно применить (AND, =, EG и т.п. - не подходят) и не знаю как можно отключить или подать 0 на триггер (какой командой/действием?)
Заранее спасибо за ответы!!!

amn
12.03.2014, 18:04
Скриншот у Вас не загрузился. Может это хотели?
12237

Zovar
13.03.2014, 05:36
12238


Вот моя пародия программы))

melky
13.03.2014, 09:57
Прикольно, Blink в Codesys и в OwenLogic работают по разному :)
В первом цикл начинает с true а во втором с false :) да еще и в первом при входе Enable равным false состояние выхода сохраняется а во втором нет.

Надо будет запомнить при переносе из одной среды в другую. ОВЕНу за это незачет.

ibx
13.03.2014, 15:33
Подскажите пожалуйста каким образом обратиться непосредственно к количеству циклов:
Хотелось бы на входе CU счётчика задать количество циклов.

Boris_K
13.03.2014, 15:39
Если я вас правильно понял, вам нужно количество циклов ПЛК, прошедших с какого-то определённого момента? Проще простого - заведите переменную типа DWORD, и увеличивайте её на 1, т. е. например строчкой kolvo:=kolvo+1; в программе PLC_PRG (если писать на ST), обнуляя её в нужный момент.

Валенок
13.03.2014, 15:56
Прикольно, Blink в Codesys и в OwenLogic работают по разному :)
В первом цикл начинает с true а во втором с false :) да еще и в первом при входе Enable равным false состояние выхода сохраняется а во втором нет.

Надо будет запомнить при переносе из одной среды в другую. ОВЕНу за это незачет.
Овен - автор util.lib ?

melky
13.03.2014, 16:16
Валенок нет, но автор OwenLogic, который появился гораздо позже CodeSys и библиотеки Util.lib

Boris_K
13.03.2014, 16:17
Прикольно, Blink в Codesys и в OwenLogic работают по разному
В первом цикл начинает с true а во втором с false да еще и в первом при входе Enable равным false состояние выхода сохраняется а во втором нет.

Надо будет запомнить при переносе из одной среды в другую. ОВЕНу за это незачет.
Ещё один повод не юзать всякие там таймеры и генераторы, а писать вручную с помощью одной-единственной функции TIME(). На ST - всего пара-тройка строк. Чем меньше всяких сторонних функций, тем больше устойчивость проги к багам. Принцип минимализма тут очень кстати.

melky
13.03.2014, 16:21
Boris_K не обязательно, просто надо читать справку по используемым функциям перед употреблением. Ну и к тому же когда человек работает с одной средой, ему нет необходимости запоминать такие нюансы о разности поведения в разных средах.
Правда хорошо, что это не касается, AND, OR, XOR, NOT и так далее, а то было бы забавным :)

Boris_K
13.03.2014, 16:25
Вот именно, человек может просто забыть что функция может по-разному работать, к тому же, перепутать несколько входов весьма просто. А тут ты сам пишешь и всё видишь как оно работает. Или оформляешь в виде собственной функции, которая лично тебе приятнее и понятнее.

Валенок
13.03.2014, 16:34
Валенок нет, но автор OwenLogic, который появился гораздо позже CodeSys и библиотеки Util.lib
Т.е. Вы предполагаете что util - правильно, OL - неправильно ?

melky
13.03.2014, 16:36
Boris_K не все умеют писать на ST, кому-то понятнее именно CFC, кто схемы умеет читать, но при этом не программер...

Валенок нет, я предполагаю, что производя контроллеры и программируемые реле один производитель мог пойти по одному пути, сделав ОДИНАКОВО и это было бы разумнее.

Валенок
13.03.2014, 16:43
Здесь неоднократно обсуждалось что для в util.blinkе весьма неудобно работает enable. И если примочка в КДС делается двумя строчками, то в OL - это сложнее. Вопрос - накой перетягивать гимор из чужой среды в свою ?

А как работает блинк в других средах ?

melky
13.03.2014, 16:47
Валенок надо будет посмотреть как в других средах. Тоже интересно.
Посмотрел в Zelio Logic, там вообще нет Blink, есть таймер Li который можно настроить на работу аналогично Blink в OwenLogic но при этом в настройках можно менять с какого состояния начать работу при Enable=1
с true или false, при EN=0 счет сбрасывается.

Boris_K
13.03.2014, 16:48
Boris_K не все умеют писать на ST, кому-то понятнее именно CFC, кто схемы умеет читать, но при этом не программер...

Всё-таки при написании мало-мальски сложных алгоритмов надо побыть немножко программером, тем более что основные принципы доступны даже школьнику, и их не так уж и много. И ST для сложных программ будет заметно юзабельнее (соответствующий холивар можете глянуть в соответствующей теме (http://www.owen.ru/forum/showthread.php?t=16716)). :)

Zovar
17.03.2014, 09:10
Ребята! объясните чайнику - почему в визуализации, если привязать к кнопке переключения ВХОД плк (у меня 1 вход плк включает автоматическую попеременную работу 2ух насосов, то есть выходов 1 и 2) - то при загрузке ПО в плк, в режиме визуализации эта кнопка не работает? как с этим бороться?

Валенок
17.03.2014, 10:11
Источник событий для набора ВХОД/Визу-кнопа/Хотелка разный для состояний эмуляция/онлайн

Zovar
17.03.2014, 14:16
вообще ничего не понял в Вашем предложении, можно "крестьянским языком"? ВОПРОСЫ: ПОЧЕМУ? КАК СДЕЛАТЬ ЧТОБЫ ЗАРАБОТАЛО?

amn
17.03.2014, 16:32
1. Потому, что Вы привязали кнопку визуализации ко входу ПЛК, а там у Вас физически ничего нет. В симуляторе работать будет.
2. Для отладки на реальном приборе подключите ко входу ПЛК тумблер и щелкайте им вместо кнопки в визуализации.

Zovar
17.03.2014, 17:15
Дело в том, что передо мной стоит задача: управление входами/выходами (кнопками в визуализации) непосредственно с touch-панельки, подключенной к плк. То есть, грубо говоря, оператор сможет переключаться между режимами АВТОМАТИЧЕСКАЯ и РУЧНАЯ РАБОТА, при помощи соответствующих кнопок, визуализированных на экране панели... Ну да ладно, все равно разобрался)) - привязывал к моим кнопкам не конкретные входа/выходы, а безадресные переменные, которые, в свою очередь, привязывал к входам/выходам

Zovar
17.03.2014, 17:17
Появился следующий вопрос)))
Требуется управлять моим ПЛК удаленно, при помощи модема. Как реализовать? (я полный чайник). Буду благодарен за ссылки на материалы, а за конкретное пошаговое пособие вообще расцелую)

RV9WFJ
18.03.2014, 05:59
Появился следующий вопрос)))
Требуется управлять моим ПЛК удаленно, при помощи модема. Как реализовать? (я полный чайник). Буду благодарен за ссылки на материалы, а за конкретное пошаговое пособие вообще расцелую)Вы так подробно описали задачу, что за решением вам только к богу обращаться. Какой ПЛК, что вы понимаете под "управлять"?

Igor.m
18.03.2014, 09:16
Всем здравствуйте! Собственно хотел задать вопрос который уже был на форуме, но так как ответа на него все еще нет (либо он мной не найден) то подскажите пожалуйста: Можно ли в памяти ПЛК сохранять лог-файлы событий alarm configuration?
К примеру произошла какая-то нештатная ситуация для системы, и я мог посмотреть по логу файла alarm configuration как вел себя алгоритм написанной программы в ПЛК или может есть какие-нибудь другие средства для реализации, бортжурнал не подходит.

Zovar
18.03.2014, 12:45
Вы так подробно описали задачу, что за решением вам только к богу обращаться. Какой ПЛК, что вы понимаете под "управлять"?
ПЛК 100 р м.
Хочется сидя в офисе, наблюдать как работают мои насосы (изначально работают в автоматическом режиме), в случае аварии (будет приходить смс на телефон) я смогу удаленно включать/выключать нужные мне насосы. Как-то так)

RV9WFJ
19.03.2014, 08:57
Всем здравствуйте! Собственно хотел задать вопрос который уже был на форуме, но так как ответа на него все еще нет (либо он мной не найден) то подскажите пожалуйста: Можно ли в памяти ПЛК сохранять лог-файлы событий alarm configuration?
К примеру произошла какая-то нештатная ситуация для системы, и я мог посмотреть по логу файла alarm configuration как вел себя алгоритм написанной программы в ПЛК или может есть какие-нибудь другие средства для реализации, бортжурнал не подходит.А возможности PLC-Configuration модуль Archiver или SysLibFile.lib не устраивают?

RV9WFJ
19.03.2014, 09:01
ПЛК 100 р м.
Хочется сидя в офисе, наблюдать как работают мои насосы (изначально работают в автоматическом режиме), в случае аварии (будет приходить смс на телефон) я смогу удаленно включать/выключать нужные мне насосы. Как-то так)Сильно понятнее не стало. Ответьте на вопросы:
1.Какой канал передачи вы хотите использовать: CSD, GPRS, SMS
2.Планируется использовать компьютер или телефон для обмена
2.Если 2 компьютер то на компьютере хотите в SCADA заводить данные или просто из CoDeSys присоединяться через модем?
Исходя из этих ответов какой модем вы планируете ставить?

Zovar
19.03.2014, 10:18
модем ОВЕН ПМ01, получается канал связи GPRS. (также, расскажите пожалуйста о возможностях CSD и **** в виде ликбеза)
Опять же, планирую использовать компьютер, но интересна информация про телефон - в качестве ознакомительной.
Заранее спасибо Вам!

melky
19.03.2014, 10:58
Zovar ПМ01 если не ошибаюсь не даст подключаться из CodeSys к вашей системе, только СМС и будет отправлять.
Если удаленно подключаться компьютером из CodeSys то нужен роутер с 3G, а это нетривиальная задача, так как требует либо поддержки оператором реальных IP адресов на вашу СИМ карту, либо поднятие VPN канала со стороны роутера (а вот тут как отправлять СМС честно не знаю).

А чтобы работала SCADA, то компьютер также должен быть оснащен модемом, чтобы дозваниваться до модема на объекте.

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

Zovar
19.03.2014, 11:38
Вопросы:
1. Система SCADA - мониторинг в реальном времени? Какое оборудование требуется?
2. Пожалуйста, расскажите подробнее о сетевом решении - мониторинг в реальном времени? что требуется для реализации?
3. А ПМ01 на пуй?)

Zovar
19.03.2014, 11:44
Вообще - очень хочется присоединяться прямо на контроллер, в визуализацию

melky
19.03.2014, 16:04
Zovar прямо на контроллер а) организация web сервера в контроллере (есть в примерах программ для ПЛК) - будет необходим роутер б) непосредственно из CodeSys - необходим роутер в) Например программами OPC сервером, есть у ИнСат бесплатная на 32 тега для поиграться - опять же роутер/
Проще говоря, имея ПЛК100 с сетевой картой, заморачиваться за его наблюдением, управлением или даже программированием используя модем ПМ01 просто глупо. Тратить деньги на модем ради СМС ?

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

Zovar
19.03.2014, 16:35
melky, расскажите пожалуйста о возможностях сетевой карты, ответьте пожалуйста конкретно - как реализовать при помощи сетевого решения, что от меня потребуется (доп. оборудование и ПО), конкретное пособие или ссылки на статьи, инструкции и т.п. Огромное спасибо за Ваши ответы!

melky
19.03.2014, 19:30
Zovar дело в том, что у вас есть и что вы хотите получить.
1. ПЛК100 (я так понимаю есть) - на борту у него есть сетевая карта, через которую его можно программировать в CodeSys, а так же мониторить и управлять необходимыми параметрами через протокол Modbus TCP
2. средства мониторинга и управления - SCADA система, любая. Если для себя чисто то можно поискать бесплатные или с ограничениями. Мониторить требуется постоянно или переодически посматривать ?
3. Отправлять СМС можно двумя способами. Контроллером, тогда модем все равно нужен и писать программу в нем необходимо, тянет за собой наличие сим карты в модеме, требует наличие модема со стороны компьютера со SCADA системой для опроса и мониторинга. Модем Овен насколько я знаю, не обладает возможностями роутера. Второй способ отправки СМС, это если SCADA система может отправлять почтовое сообщение, необходим компьютер с запущенным Outlook 2010 и настройка в нем переадресации почтового сообщения на СМС (проверял на операторе Мегафон, работает. отправлял СМС с одного своего номера на второй номер, обе сим карты были воткнуты в телефон. Это услуга оператора)
4. Как реализовать при помощи сетевого решения ? - вы можете локально подключиться к ПЛК сетевым кабелем напрямую или через свитч (ПЛК в один порт свича, комп в другой) и программировать его, мониторить ОРС сервером. Вот тоже самое можно делать удаленно, но для этого необходим роутер. Если место установки ПЛК можно оборудовать только 3G/4G модемом, то дело несколько усложняется. Вариант А - оператор предоставляет вам на сим карту белый IP адрес - за деньги, в зависимости от оператора возможно только на юрлицо. Роутер при этом может быть практически любым, подключаться можно практически отовсюду. Вариант Б, симкарта обычная, без предоставления белого IP адреса. Тогда необходим в мире (дома, у друзей, на работе, на платных серверах) постоянно включенный компьютер с поднятым VPN сервером, роутер с возможностью поднимать VPN соединение. Тогда в любом месте мира можно подключившись вторым клиентом VPN зайти на первого клиента (роутер возле ПЛК). Вот тут то и возникают сложности, я пока знаю два роутера, позволяющих такое, это iRZ RUH конторы Radiofid и Microtik, на обоих поднимал openVPN клиентов и через сторонний сервер подключался к своему оборудованию дома. Не только к ПЛК, но и вообще к домашним компьютерам, системе видеонаблюдения и т.д. Раньше использовал Мегафон со статическим IP адресом - а это 300р в месяц помимо оплаты за интернет.

Так что сперва определитесь как вы хотите подключаться и что хотите видеть, делать.

Zovar
20.03.2014, 05:44
Давайте расставим все по местам:
1. Оборудование - есть ПЛК 100 РМ с готовым ПО (управление насосами в автоматическом и ручном режимах). Любое другое оборудование можно купить.
2. ПЛК (как и насосы соответственно) находятся далеко от моего "пункта слежения" (я хочу, находясь в любой точке города, получив СМС об аварии с GSM модуля, либо просто по своему хотению, открыть ноутбук и производить любую работу со своими насосами - включать их, отключать и т.п. - программа и визуализация готовы - в эмуляции любые переключения насосов работают и т.п.) - проводное подключение по сети "компьютер-плк" ИСКЛЮЧАЕТСЯ
3. Итак, доступ только удаленный. На ютюбе, очень понравилось видео, показывающее возможности WEB-визуализации, там удаленно включали/выключали освещение. Вот так ХОЧУ (то есть двигаться надо именно в этом напрвлении)
!!!

melky
20.03.2014, 07:05
Мучайте ваших провайдеров сотовой связи на предмет получения реальных IP адресов, статического или динамического.
У нас частным лицам давал только Мегафон за денюжку. МТС только юрлицам и ИП и то я не дождался, оформив на брата, плюнул и взял мегафон. В последствии взял yota и использую openVPN на Microtik. Когда определитесь с провайдером или независимо от провайдера с vpn каналом, можно уже думать как.

3. для этого и надо web сервер программировать в плк, есть примеры в полезностях.

Zovar
20.03.2014, 07:13
ВОТ! Мы пришли наконец-то - WEB сервер мне нужен! ОООчень все сложно описано, такой чайник как я никогда не реализует все это! Есть ли какое-то пошаговое пособие-инструкция для таких людей как я?

melky
20.03.2014, 08:45
Пример реализации WEB сервера (http://www.owen.ru/forum/showthread.php?t=13588) Смотрите по ссылке, я тоже до этого не добрался еще.

Придется программировать, но чтобы web сервер работал то однозначно необходим доступ по http, а для этого необходим роутер с поддежкой 3G/4G и как вы будете пробиваться на устройство будет зависеть от оператора сотовой связи в вашем регионе. Например вам дают статический (динамический) реальный IP адрес (самый лучший вариант), достаточно роутера например Zyxel Keenetik 4G или любой аналогичный.
Если реального IP адреса не дают или дорого, то нужен роутер с поддержкой VPN клиента поверх 3G/4G соединения, пока из опробованных на 100% проверенных в работе знаю только iRZ RUH (порядка 12 тысяч рублей, настраивал по работе) и Mikrotik 751-й (стоит дома, стоимость сейчас около 2,5 т.р + любой USB модем любого оператора, который поддерживает этот роутер, от Zyxel пришлось отказаться так как не умел он пропускать сквозь два соединения на оборудование пакеты).
Может Зиксель уже и научили, но проверять не на чем. Может есть еще комбинации, но тут не подскажу, так как нет желания выкидывать деньги для проверок. Для VPN соединения необходим сторонний VPN сервер, поднятый где-то, где есть реальный IP. Например на работе, дома у друзей, платный или бесплатный сервер на просторах нета.

Будет доступ по TCP протоколам к устройству, будет все, кроме СМС. тут уже либо все-таки ставить дополнительный модем от ОВЕН (а это дополнительные расходы), либо учить систему отправлять не СМС а почтовое сообщение.
В общем что больше важнее, с той стороны и искать решения.

Sergey666
20.03.2014, 10:10
ВОТ! Мы пришли наконец-то - WEB сервер мне нужен! ОООчень все сложно описано, такой чайник как я никогда не реализует все это! Есть ли какое-то пошаговое пособие-инструкция для таких людей как я?

Может посмотрите в сторону ПЛК 323 . Дороговато , но ... недавно (чисто для интереса) подбирал оборудование для подобного функционала и ... кроме этого ничего , остальное очень-очень мутно .

RV9WFJ
20.03.2014, 11:22
Zovar ПМ01 если не ошибаюсь не даст подключаться из CodeSys к вашей системе, только СМС и будет отправлять.Ошибаетесь!
http://www.owen.ru/forum/showthread.php?t=13582
Правда надо учесть что по GPRS модем с SIM300 зависал раз в 2 часа при плохой связи и лечить это возможно было только ресетом модема и ПЛК!!

Если удаленно подключаться компьютером из CodeSys то нужен роутер с 3G, а это нетривиальная задача, так как требует либо поддержки оператором реальных IP адресов на вашу СИМ карту, либо поднятие VPN канала со стороны роутера (а вот тут как отправлять СМС честно не знаю).Опять ошибаетесь. Можно через ПМ01, только по CSD http://www.owen.ru/uploads/inctrukciya_po_cozdaniyu_udalennogo_podklyucheniya _credoi_codesys_k_oven_plk_cherez_modem.pdf

capzap
20.03.2014, 11:29
ВОТ! Мы пришли наконец-то - WEB сервер мне нужен! ОООчень все сложно описано, такой чайник как я никогда не реализует все это! Есть ли какое-то пошаговое пособие-инструкция для таких людей как я?
Фраза: я чайник,отпугнет любого кто захотел бы Вам помочь, просто это означает,что Вам придется не основы и направление объяснять,а полностью сделать за Вас проект и когда неизвестно что и в каком виде нужно,это займет массу времени,я так понимаю неоплачиваемого,тут конечно есть альтруисты но не настолько

RV9WFJ
20.03.2014, 11:30
Тогда необходим в мире (дома, у друзей, на работе, на платных серверах) постоянно включенный компьютер с поднятым VPN сервером, роутер с возможностью поднимать VPN соединение. Тогда в любом месте мира можно подключившись вторым клиентом VPN зайти на первого клиента (роутер возле ПЛК). Вот тут то и возникают сложности, я пока знаю два роутера, позволяющих такое, это iRZ RUH конторы Radiofid и Microtik, на обоих поднимал openVPN клиентов и через сторонний сервер подключался к своему оборудованию дома. Не только к ПЛК, но и вообще к домашним компьютерам, системе видеонаблюдения и т.д. Раньше использовал Мегафон со статическим IP адресом - а это 300р в месяц помимо оплаты за интернет.Непонятно зачем вы на клиенте статику делали и 300 руб платили?

RV9WFJ
20.03.2014, 11:33
ВОТ! Мы пришли наконец-то - WEB сервер мне нужен! ОООчень все сложно описано, такой чайник как я никогда не реализует все это! Есть ли какое-то пошаговое пособие-инструкция для таких людей как я?
Забудьте про WEB сервер на ПЛК100, он нормально работать не будет. Вам надо в сторону ModBus TCP или ModBus через TCP смотреть. Без изменения проекта это не получится. Смотреть визуализацию CoDeSys возможно только при подключении через GateWay, наверно не лучший вариант на рабочем контроллере.

Igor.m
20.03.2014, 13:09
Подскажите кто знает, при изменении проекта и загрузке нового через CoDeSys ПЛК перезагружается, можно ли избежать этой перезагрузки и залить небольшие изменения в программу без рестарта ПЛК? (конкретно: добавил в области ввода/вывода слэйв устройства 8bit данных, но не присваивал им никаких переменных, не привязывал к алгоритму)

melky
20.03.2014, 13:39
RV9WFJ вы давно сидели на интернете 64 кбит/с ? вы предлагаете так же использовать и программирование из среды CodeSys да еще на скорости гораздо меньшей ? Опять же, необходим 2-й модем не только чтобы подключиться КДС но и мониторить все это. Я выше писал уже об этом, где высказал свое ИМХО, что раз на борту ПЛК есть сетевая карта, лучше и разумнее идти по этому направлению. Будет это Modbus TCP или вообще прямое соединение, уже неважно. А если необходимы СМС, то модем будет только один со стороны ПЛК, но тоже не лучший вариант.

И почему на ПЛК100 забыть про веб ? туда же не картинки грузить, можно что-то простенькое сделать для контроля и управления, зато можно будет это делать даже со смартфона на Андроиде, по крайней мере я через VPN могу подключаться с Ведра без проблем к любому домашнему оборудованию в сети по WEB

Меня не путайте только, платил за статику 300р, когда домашний роутер не являлся VPN клиентом и дома можно было использовать только 3G, заходил просто по IP. Потом поменял провайдера Мегафон на Yota LTE 4G когда он добрался до моих трущоб :), где для физлиц не дают реальных IP и тогда уже сделал VPN клиента.

Алексеu
20.03.2014, 14:04
Всем добрый день.
С утра сижу "вкуриваю" эту ветку форума, но так и не придумал, как мне задать свой "умный" вопрос. Поэтому поступлю проще, и скажу, что мне надо получить, что-бы мне сказали что для этого надо приобрести (изучить).
Есть:
1.PLC 150AM. Находится на даче и управляет работой насосной станции, обогрева труб, проходящих по неотапливаемому подвалу, и пр. мелочами. Летом, когда начну вести отопление, повешу на него котел и клапана.
2. Роутер с 3G свистком и возможностью получения статического IP (или использования встроенной DDNS службы).
3. Ненужная бука на Pentium_M с WinXP.
Надо:
1. Что-бы заработал сервер сообщений и трендов.
2. Там-же работал OPC сервер,что-бы я мог из любого места приконектиться к нему скадой и, открыв экран, посмотреть, допустим, тренд давления и температуры и время включения/выключения насоса (разумеется экран я нарисую).
Спасибо.

Алексеu
20.03.2014, 16:07
ВОТ! Мы пришли наконец-то - WEB сервер мне нужен! ОООчень все сложно описано, такой чайник как я никогда не реализует все это! Есть ли какое-то пошаговое пособие-инструкция для таких людей как я?

Я бы все-таки рассмотрел вариант тов. melky:


Пример реализации WEB сервера (http://www.owen.ru/forum/showthread.php?t=13588) Смотрите по ссылке, я тоже до этого не добрался еще.

Придется программировать, но чтобы web сервер работал то однозначно необходим доступ по http, а для этого необходим роутер с поддежкой 3G/4G и как вы будете пробиваться на устройство будет зависеть от оператора сотовой связи в вашем регионе. Например вам дают статический (динамический) реальный IP адрес (самый лучший вариант), достаточно роутера например Zyxel Keenetik 4G или любой аналогичный.
Если реального IP адреса не дают или дорого, то нужен роутер с поддержкой VPN клиента поверх 3G/4G соединения, пока из опробованных на 100% проверенных в работе знаю только iRZ RUH (порядка 12 тысяч рублей, настраивал по работе) и Mikrotik 751-й (стоит дома, стоимость сейчас около 2,5 т.р + любой USB модем любого оператора, который поддерживает этот роутер, от Zyxel пришлось отказаться так как не умел он пропускать сквозь два соединения на оборудование пакеты).
Может Зиксель уже и научили, но проверять не на чем. Может есть еще комбинации, но тут не подскажу, так как нет желания выкидывать деньги для проверок. Для VPN соединения необходим сторонний VPN сервер, поднятый где-то, где есть реальный IP. Например на работе, дома у друзей, платный или бесплатный сервер на просторах нета.

Будет доступ по TCP протоколам к устройству, будет все, кроме СМС. тут уже либо все-таки ставить дополнительный модем от ОВЕН (а это дополнительные расходы), либо учить систему отправлять не СМС а почтовое сообщение.
В общем что больше важнее, с той стороны и искать решения.

И начал-бы с подбора 3G-4G роутера с поддержкой VPN-сервера и DDNS (их целая куча за неособо большие деньги 2000-3500 руб.). VPN в данном случае нужен для стука к роутеру со статическим или динамическим IP,а DDNS(динамический DNS) для того,что-бы не платить за статику у провайдера. Соответственно ставишь роутер около PLC, и коннектишься уже к нему с любой машины,где есть КОДЕСИС и твой проект,используя свою визуализацию. Для этого создаешь на этой машине VPN туннель до роутера.
Когда делал свою прогу, использовал ASUS RT-N16. У него есть DDNS ASUS. ASUS выдает тебе бесплатное имя в формате ВАСЯ_ПУПКИН.asuscomm.com. Ты-же уже создаешь VPN на этот адрес. Все работало(с работы в Строгино тестил и изменял проект,находящийся на даче под Клином).

melky
20.03.2014, 16:32
Алексеu поправочка по роутерам, если мы не покупаем (не предоставляет провайдер) реальный IP адрес. Мы находимся за NAT-ом провайдера и получаем левый IP внутресетевой от провайдера. Так вот даже если роутер имеет VPN клиента на борту, еще не означает, что мы сможем на него попасть извне и тем более пройти сквозь данный роутер на внутреннюю сеть, где будет подключен ПЛК.
Столкнулся с данной проблемой на Zyxel Keenetik 4G, долго мучал их техподдержку но так ничего и не добился. Максимум, это вход на сам роутер, проброс портов сквозь VPN клиента, поднятого поверх 3G не работал.
Выше написал два роутера, проверенных в данном режиме работы.

Вот, если Асус имеет свой DDNS, все равно необходим РЕАЛЬНЫЙ IP адрес, и даже динамический у того же Мегафона платный. У МТС нет для физлиц вообще, для юрлиц есть, но оплата по трафику (нет безлимита при открытии реального IP, тоже сталкивался по работе). У Билайна тоже не было на тот момент.

Алексеu
20.03.2014, 16:43
Алексеu поправочка по роутерам, если мы не покупаем (не предоставляет провайдер) реальный IP адрес. Мы находимся за NAT-ом провайдера и получаем левый IP внутресетевой от провайдера. Так вот даже если роутер имеет VPN клиента на борту, еще не означает, что мы сможем на него попасть извне и тем более пройти сквозь данный роутер на внутреннюю сеть, где будет подключен ПЛК.
Столкнулся с данной проблемой на Zyxel Keenetik 4G, долго мучал их техподдержку но так ничего и не добился. Максимум, это вход на сам роутер, проброс портов сквозь VPN клиента, поднятого поверх 3G не работал.
Выше написал два роутера, проверенных в данном режиме работы.

Вот, если Асус имеет свой DDNS, все равно необходим РЕАЛЬНЫЙ IP адрес, и даже динамический у того же Мегафона платный. У МТС нет для физлиц вообще, для юрлиц есть, но оплата по трафику (нет безлимита при открытии реального IP, тоже сталкивался по работе). У Билайна тоже не было на тот момент.

melky добрый день. У меня же в том году получилось (провайдер Мегафон). Ведь ты же сам пишешь,что "Максимум, это вход на сам роутер"-т.е. зайти ты на него можешь,а дальше он уж пускай сам решает,как будет порты уговаривать :). Я,как потеплее будет, возьму свою железку и сгоняю на дачу-проверю еще раз. Но когда поставил свой ASUS первый раз - получилось связаться сразу и без настроек. Как я понимаю,т.к. у роутера все равно в один момент времени должен быть какой-то внешний IP,то при включенной службе он постоянно его мониторит и привязывает на серваке асуса к имени вася_пупкин. Но это ИМХО.

xaron
20.03.2014, 16:51
Пытаю ПЛК100 и ИП320(как мастер). Очень расстроен отсутствием в ПЛК100 менеджера рецептов (((( с сименсом проще получалось. Подскажите пожалуйста как правильно организовать работу с рецептами. Может у кого пример есть. Буду очень благодарен !!!

RV9WFJ
21.03.2014, 06:16
Подскажите кто знает, при изменении проекта и загрузке нового через CoDeSys ПЛК перезагружается, можно ли избежать этой перезагрузки и залить небольшие изменения в программу без рестарта ПЛК? (конкретно: добавил в области ввода/вывода слэйв устройства 8bit данных, но не присваивал им никаких переменных, не привязывал к алгоритму)Если меняли PLCConfiguration то никак без перезагрузки не получится, о чем компилятор и предупреждает при сохранении изменений. Если меняли только POU и сохранились все файлы с прошлой загрузки (генерируемые при компиляции) то проблем нет.

RV9WFJ
21.03.2014, 06:28
RV9WFJ вы давно сидели на интернете 64 кбит/с ? вы предлагаете так же использовать и программирование из среды CodeSys да еще на скорости гораздо меньшей ? Опять же, необходим 2-й модем не только чтобы подключиться КДС но и мониторить все это. Я выше писал уже об этом, где высказал свое ИМХО, что раз на борту ПЛК есть сетевая карта, лучше и разумнее идти по этому направлению. Будет это Modbus TCP или вообще прямое соединение, уже неважно. А если необходимы СМС, то модем будет только один со стороны ПЛК, но тоже не лучший вариант.Ну на счет 64 кбит вопрос задачи и бюджета, мониторить этого конечно явно мало, да и я выше писал что это хреновая затея мониторить через Gateway. Вы меня невнимательно прочитали. А если просто залить на расстоянии с малыми затратами то может и вариант.
Я то собственно тоже или RUH2b ставлю или АТМ-ххх обычно. Кстати если RUH3 использовать то еще и SMS прицепить можно будет 8 шт.

И почему на ПЛК100 забыть про веб ? туда же не картинки грузить, можно что-то простенькое сделать для контроля и управления, зато можно будет это делать даже со смартфона на Андроиде, по крайней мере я через VPN могу подключаться с Ведра без проблем к любому домашнему оборудованию в сети по WEBПотому что этот с позволения сказать сервер не то что DDoS не переживет а даже просто попадание на IP bota какого-нибудь. Каждый должен заниматься своим делом. Я бы сервер на VPS поднимал, если охота с Android мониторить, а с ПЛК общался через PHPModBus https://code.google.com/p/phpmodbus/ например. Еще вопрос что проще будет - сайт на VPS развернуть или корявый сервер допиливать на куске железа где нет ОС!

RV9WFJ
21.03.2014, 06:39
По роутерам подойдет любой а не только указанные Melky, тут проблема не в роуторе на сколько я понимаю а в сером IP выдаваемом Мегафоном и другими операторами. Этот IP находится за NATом оператора, поэтому DynDNS вас никоем образом не спасет. Но вот поднять DynDNS на проводном провайдере у нас в городе вполне реально, более того у нас даже поднимать ничего не надо, по желанию провайдер сам выдает тебе DNS адрес :-) Поэтому вариант сервера OpenVPN на компе со SCADA и любым роутером с поддержкой OpenVPN Client и 3G свистком на стороне ПЛК абсолютно рабочий. Правда на роутере я бы экономить не стал так как OpenVPN очень ресурсоемкая штука и не любой проц его нормально тянет.

capzap
21.03.2014, 06:46
:) уже можно сказать,что несколько лет назад реализовывал и показывал здесь на форуме веб-сервер с помощью поставщика хостинга.
Смысл в том, что плата примерно в год около тысячи рублей, далее можно нанять программиста по верстке сайта, от плк требеутся при всяких перезагрузках вычислять какой АйПишник присвоен включившемуся модему, отсылать его на сайт в определенном запросе например, а подключаемые клиенты открыв страницу будут получать данные,которые с помощью яваскипта периодически будут запрашиваться с плк, хоть сотой серии хоть из под КДС3

schlosser
21.03.2014, 08:38
Всем доброго времени суток.
Подскажите такую весчь и как с этим бороться. К плк150_им подцепил мв110_2а, в КДС в конфигурации ПЛК наблюдаю показания температуры. Как бы всё нормально. НО решил запихнуть датчики в снег(благо он еще есть) и вот тут я обнаружил вот такую странность( для меня), при переходе температуры через 0 градусов показания становятся какими то странными и постоянно скачут, т.е. 0 отображается как то не корректно.Или так должно быть? Как только показания перевалили через 0, показания температуры начинают отображается нормально, со знаком минус.

melky
21.03.2014, 08:46
RV9WFJ Какой DDoS если вы ставите роутер, который фактически является firewall-ом ? тем более пробраться на ПЛК в случае с поднятием VPN канала можно только сос тороны VPN сервера или другого клиента.
Не могу сказать, насколько это проблема, но наблюдалось на 2-х бытовых роутерах именно при поднятии VPN соединения поверх 3G соединения от оператора. На Zyxel (все версии Кинетик с поддержкой 3G так как ядро прошивки одинаковое и на каком-то TP-Link), не заточены их прошивки для работы проброса сквозь два соединения одновременно. Это проблема прошивок роутеров. К тому же прошивки Кинетиков не имеют openVPN, а только pptp, IPSec и l2tp (последние два не проверял, но думаю проблема та же). Речь идет не о подключении к оператору по vpn каналу а о поднятии своего vpn канала поверх канала оператора, вот тут то проблема и обнаружилась.
Вроде еще должно работать на Роутерах с прошивками от DD-WRT, но сам лично не проверял.

Igor.m
21.03.2014, 08:49
Если меняли PLCConfiguration то никак без перезагрузки не получится

Про перезагрузку понял, другой вопрос: в области конфигурации объявляю "слова", "биты" и все нормально работает за исключением последнего объявления - 8bit и оно не видится панелью. Почему так? Может кто сталкивался, выкладываю конфигурацию
12323

lara197a
21.03.2014, 08:59
Напутали с нумерацией в панели.
Обычно с бит начинают, а не заканчивают. Чтобы легче считать было.
Нумерацию этих бит нужно считать от начала адресного пространства(сверху в низ) по битно, учитывая все регистры.

Igor.m
21.03.2014, 10:07
Напутали с нумерацией в панели.
Обычно с бит начинают, а не заканчивают. Чтобы легче считать было.
Нумерацию этих бит нужно считать от начала адресного пространства(сверху в низ) по битно, учитывая все регистры.

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

Алексеu
21.03.2014, 11:10
Всем добрый день.
С утра сижу "вкуриваю" эту ветку форума, но так и не придумал, как мне задать свой "умный" вопрос. Поэтому поступлю проще, и скажу, что мне надо получить, что-бы мне сказали что для этого надо приобрести (изучить).
Есть:
1.PLC 150AM. Находится на даче и управляет работой насосной станции, обогрева труб, проходящих по неотапливаемому подвалу, и пр. мелочами. Летом, когда начну вести отопление, повешу на него котел и клапана.
2. Роутер с 3G свистком и возможностью получения статического IP (или использования встроенной DDNS службы).
3. Ненужная бука на Pentium_M с WinXP.
Надо:
1. Что-бы заработал сервер сообщений и трендов.
2. Там-же работал OPC сервер,что-бы я мог из любого места приконектиться к нему скадой и, открыв экран, посмотреть, допустим, тренд давления и температуры и время включения/выключения насоса (разумеется экран я нарисую).
Спасибо.
Ну а мне что-нибудь посоветуют?

Сергей Жданкин
21.03.2014, 15:45
в будущем возможны программы эмуляторы на все выпускаемые устройства? Спасибо

RV9WFJ
22.03.2014, 08:00
RV9WFJ Какой DDoS если вы ставите роутер, который фактически является firewall-ом ? тем более пробраться на ПЛК в случае с поднятием VPN канала можно только со стороны VPN сервера или другого клиента. Ну если WEB через OpenVPN тогда беру свои слова обратно на счет DDoS, только мне тогда непонятно зачем вообще WEB городить. Чем ModBus не подойдет. ModBus Master на андройд уже появился, зачем WEB то нужен который на ПЛК100 будет крайне ущербный. На СПК другое дело.

Что касается бытовых роутеров то я как раз о том и писал, что там и глючные прошивки бывают и слабые процы - надо пробывать. Но писать, что они все не работают неправильно. ASUS N66U работает но и цена у него не бюджетная.

RV9WFJ
22.03.2014, 08:05
Всем добрый день.
С утра сижу "вкуриваю" эту ветку форума, но так и не придумал, как мне задать свой "умный" вопрос. Поэтому поступлю проще, и скажу, что мне надо получить, что-бы мне сказали что для этого надо приобрести (изучить).
Есть:
1.PLC 150AM. Находится на даче и управляет работой насосной станции, обогрева труб, проходящих по неотапливаемому подвалу, и пр. мелочами. Летом, когда начну вести отопление, повешу на него котел и клапана.
2. Роутер с 3G свистком и возможностью получения статического IP (или использования встроенной DDNS службы).
В 3G DynDNS не будет работать так как выдаваемый Вам оператором IP находится за внешним NAT.

3. Ненужная бука на Pentium_M с WinXP.
Надо:
1. Что-бы заработал сервер сообщений и трендов.
Вот тут поподробнее, думаю именно в этом месте все попытки помочь вам спотыкаются об непонимание того что вы хотите.

2. Там-же работал OPC сервер,что-бы я мог из любого места приконектиться к нему скадой и, открыв экран, посмотреть, допустим, тренд давления и температуры и время включения/выключения насоса (разумеется экран я нарисую).
Спасибо.

melky
22.03.2014, 10:22
RV9WFJ так я написал про проверенные варианты iRZ RUH и Mikrotik (работоспособны) и на тот момент наработающие варианты серии Zyxel Keenetik (были 4G и Giga) и какой-то TP-Link (модель не знаю, человек на своем пытался поднять openVPN и наступил на те же грабли, невозможность проброса портов сквозь два соединения). Про остальные сказал что не знаю, только деньги выкидывать для проверки.

На счет Модбас мастер для Ведра не пробовал, просто web он универсальнее, так как зайти можно откуда угодно и когда угодно, хотя данный факт тоже ограничен необходимостью иметь openVPN клиента из-за серых IP провайдеров.

в 3G можно получить реальный IP но за денюжку и(или) наличием юрлица или ИП
По работе был случай, я недели 2 ждал реального IP от МТС и плюнул, сбербанку они выдали в течении дня :)

Алексеu
22.03.2014, 11:20
Вот тут поподробнее, думаю именно в этом месте все попытки помочь вам спотыкаются об непонимание того что вы хотите.
В среде CODESYS можно сделать конфигурацию тревог с записью истории,но она работает только тогда,когда работает сам Кодесис. Надо, что-бы сообщения и тренды писались на комп постоянно и, когда мне надо и я приконектился к нему и посмотрел , что происходило за прошедшее время.

melky
22.03.2014, 11:35
Алексеu а к крутящемуся локально с ПЛК в одной сети ОРС серверу нельзя подключаться ?
Я так понял, что на стареньком ноутбуке как раз и будет крутиться сервер или скада ?

Алексеu
22.03.2014, 12:53
Алексеu а к крутящемуся локально с ПЛК в одной сети ОРС серверу нельзя подключаться ?
Я так понял, что на стареньком ноутбуке как раз и будет крутиться сервер или скада ?

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

melky
22.03.2014, 22:55
Алексеu тут не подскажу, так как не знаком со скадами пока. Под свою задачу по работе нашел хорошую (для задачи связывать воедино устройства modbus и SNMP) но платную. С визуализацией, трендами и прочими плюшками.

Из бесплатных, может openSCADA ? на виртуалке развернуть или есть еще под Винду, нарывался на название тут же на форуме, но ссылку не сохранил

RV9WFJ
23.03.2014, 07:09
Вот про это я и спрашивал-как это сделать. Как я понял родной КОДЕСИСный OPC для этих целей использовать нельзя? Или все-таки можно,а если нельзя,то какой лучше взять?
У меня когда на локальной машине работает КОДЕСИС с запущенным проектом пишуться и тренды и сообщения на диск этой локальной машины. Как только проект КОДЕСИС отваливается от контроллера так сразу прекращается и запись.И родной CoDeSys OPC можно использовать и OWEN ModBus OPC только они оба "хреноваты". Я бы использовал лучше MasterOPC до 32 тегов он бесплатный. Тоже самое и по SCADA могу порекомендовать Master SCADA до 32 тегов бесплатная. По идее к ней можно WEB клиентов подключать, только по мне так они страшненькие и своих денег (примерно 50 т.р.) не стоят. Проще через удаленный рабочий стол смотреть , тем более что его теперь на любой ОС можно использовать (Android, iOS). Или уже если полноценный клиент удаленный хочется то опять OpenVPN и MSRT Net + Client но этот комплект уже хороших денег стоит.

Yanis
24.03.2014, 09:43
Здравствуйте,
Чему равны ресурсы конфигурации(config.dat) контроллера ПЛК 100-Р-М. . У меня файл config.dat равен 57710 , и при прогрузке проекта выходит ошибка PLC STOPED The memory for configuration come to an end

Андрей1234
24.03.2014, 15:28
здравствуйте. помогите решить проблему с плк100. подключил кнопку пуска и на выходе лампочку. в кодесис сделал простую программу из замыкающего контакта с обмоткой и в конфигурации всё указал, но когда нажимаю на кнопку ничего не происходит только через некоторое время после нажатия пишет ошибка связи(подключено через USB). если замыкать в программе, то лампочка включается, но через некоторое время снова пишет ошибка связи. как это исправить можно или может что-то не так делаю? так же вы помогли сделать программу, но она тоже пишет ошибку свзи, когда нажимаю на кнопку пуска

Yanis
24.03.2014, 15:52
здравствуйте. помогите решить проблему с плк100. подключил кнопку пуска и на выходе лампочку. в кодесис сделал простую программу из замыкающего контакта с обмоткой и в конфигурации всё указал, но когда нажимаю на кнопку ничего не происходит только через некоторое время после нажатия пишет ошибка связи(подключено через USB). если замыкать в программе, то лампочка включается, но через некоторое время снова пишет ошибка связи. как это исправить можно или может что-то не так делаю? так же вы помогли сделать программу, но она тоже пишет ошибку свзи, когда нажимаю на кнопку пуска

Скинь свою программу

Андрей1234
24.03.2014, 16:16
http://www.fayloobmennik.net/3675229 когда из конфигурации убирал кнопку и в программе замыкал контакт, тогда лампочка работала, но вылетала ошибка связи почти сразу

Yanis
24.03.2014, 16:33
Удали S1, где объявление переменной в блоке VAR

Андрей1234
24.03.2014, 17:16
и если убрать то не будет всё время выдавать ошибку связи? и почему на кнопку могло не реагировать, когда не в программе нажимал. вот в этой программе что нужно изменить, что бы работало не подскажите http://www.fayloobmennik.net/3675415

petera
24.03.2014, 17:45
Попробуйте увеличить тайм-аут связи.
В меню Проект--->Опции...
12350

Андрей1234
24.03.2014, 17:54
а это на что повлияет? на время связи с контроллером от компьютера?

Андрей1234
24.03.2014, 19:25
а то что кнопка пуска не работает как можно исправить? нажимая её контакты на плк 0 и 1 прозваниваются что замкнуты.
во 2й программе VAR с переменными нету

petera
24.03.2014, 21:37
а это на что повлияет? на время связи с контроллером от компьютера?
Это может устранить обрыв связи с контроллером.


а то что кнопка пуска не работает как можно исправить? нажимая её контакты на плк 0 и 1 прозваниваются что замкнуты.
во 2й программе VAR с переменными нету
Ваша вторая программа не доступна.
Совет.
Вы можете прикреплять свои файлы прямо к сообщениям. Для этого нужно перейти в расширенный режим (кнопка в низу справа).
И затем можно будет загружать файлы на форум либо с помощью кнопки на панели инструментов, либо через "Дополнительные опциии-->Вложения-->Управление вложениями"

Андрей1234
24.03.2014, 21:43
получилось?

Igor.m
25.03.2014, 08:32
Подскажите, столкнулся недавно с такой проблемой: есть ПЛК 110, модули МУ110 и ПЧ Altivar12. Приборы в сети опрашиваются по RS 485, подключены 2 согласующих резистора один в конце линии другой у ПЛК (длина линии примерно 70-80м), расположение в сети следующее: ПЛК - МУ110(2шт) - ПЧ Atv12 (3шт) - МУ110(2шт)- ПЧ Atv12. Когда не стояло сопротивлений включаю в сеть ПЧ Atv12 (3шт) и опрос модулей овен сразу прекращается (или не сразу, работает некорректно вообщем), а частотники работают, выключаю ПЧ из сети - опрос возобновился. Когда не было резисторов наблюдалась та же ситуация. В чем может быть причина?

kgsh82
25.03.2014, 19:58
Подскажите, столкнулся недавно с такой проблемой: есть ПЛК 110, модули МУ110 и ПЧ Altivar12. Приборы в сети опрашиваются по RS 485, подключены 2 согласующих резистора один в конце линии другой у ПЛК (длина линии примерно 70-80м), расположение в сети следующее: ПЛК - МУ110(2шт) - ПЧ Atv12 (3шт) - МУ110(2шт)- ПЧ Atv12. Когда не стояло сопротивлений включаю в сеть ПЧ Atv12 (3шт) и опрос модулей овен сразу прекращается (или не сразу, работает некорректно вообщем), а частотники работают, выключаю ПЧ из сети - опрос возобновился. Когда не было резисторов наблюдалась та же ситуация. В чем может быть причина?

Для этого они и нужны - терминальные резисторы. Подробнее - повторите про RS485.

yurmik
28.03.2014, 15:14
Добрый день. Вопрос с архивацией. Архивацию делаю через тренды. Запись происходит каждые 5 с. Можно ли как нибудь сделать запись каждую секунду, может как то не через тренды возможно архивировать?

jurgen
29.03.2014, 00:38
Доброе время суток! Интересуют параметры fKo, fKi, fKdKi, fKcool из библиотеки PID_Regulators. Нигде не могу найти документацию на ети параметры! Может кто скинет интересную инфу? Спасибо

RV9WFJ
29.03.2014, 06:15
Доброе время суток! Интересуют параметры fKo, fKi, fKdKi, fKcool из библиотеки PID_Regulators. Нигде не могу найти документацию на ети параметры! Может кто скинет интересную инфу? СпасибоЯ бы наверно советовал Вам работать c ПИД или из Pid_Reg2.lib или из UTIL.lib, в зависимости от задачи. Так хотя бы больше понимать будете (во втором случае) что у вас происходит внутри. Для себя написал свой ПИД на основе UTIL.lib но с поддержкой выходов TIME с аналоговых модулей.

RV9WFJ
29.03.2014, 06:16
Добрый день. Вопрос с архивацией. Архивацию делаю через тренды. Запись происходит каждые 5 с. Можно ли как нибудь сделать запись каждую секунду, может как то не через тренды возможно архивировать?Нужно значительно больше информации чтоб понять чего вы хотите.

yurmik
31.03.2014, 10:14
Нужно значительно больше информации чтоб понять чего вы хотите.

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

Валенок
31.03.2014, 10:55
syslibfile

Medved
31.03.2014, 16:07
Добрый день.. Не могу запустить визуализацию через Codesys HMI. Выдает 12444.. Как вылечить?

RV9WFJ
01.04.2014, 01:00
Есть значения переменных, данные с аналоговых входов, эти значения нужно регистрировать каждую секунду. То есть чтобы велся архив. Как это можно реализовать?Для начала указали бы какой контроллер или можете сразу следовать совету Валенка, правда это не самый простой путь.

RV9WFJ
01.04.2014, 01:01
Добрый день.. Не могу запустить визуализацию через Codesys HMI. Выдает 12444.. Как вылечить?Вероятно где-то ссылка на картинку некорректная.

kukla100
02.04.2014, 10:50
Помогите! вот этот проект в КДС-3 работает, а в КДС-2 не хочет выдаёт предупреждение:Тип 'INT' операнда не соответствует типу 'DWORD' преобразования! Будет использован 'INT'. А если сделать как во втором варианте то эта штука начинает работать.

Константин Владимирович
04.04.2014, 16:46
Товарищи! Помогите разобраться со способом адресации данных!
Есть Плк110-220.32.P-L к нему подключен модуль МВ110-224.8А к 8му входу которого подключен датчик 4-20 мА. Как вычислить register address этого датчика?1249712498

Валенок
04.04.2014, 17:21
мва8, мв110-2а/8а адреса:
(N-1)*6+1, int
(N-1)*6+4, real
N - номер ai 1..2/1..8

Константин Владимирович
07.04.2014, 10:44
Спасибо! Интересно как бы я сам об этом должен был догадаться:confused:

capzap
07.04.2014, 11:55
Спасибо! Интересно как бы я сам об этом должен был догадаться:confused:

Да всё очень просто, прочитать документацию на изделие до конца, включая приложения

Flicker
09.04.2014, 08:13
Использую блок BLINK. При значение TRUE на выходе ничего не происходит. Приходится переводит в FALSE? потом снова в TRUE и блок работает, в чем дело?

Валенок
09.04.2014, 08:27
в чем дело?
В непрочитанности хэлпа.

При значение TRUE на выходе ничего не происходит
Банально - код ?

Flicker
09.04.2014, 09:04
В непрочитанности хэлпа.

Банально - код ?


При сбросе Enable временные уставки сохраняются? Видимо это так. Как можно сделать генератор, который при сбросе начнет работу с новыми уставками?

amn
09.04.2014, 10:27
Может такой вариант подойдет?
12554

alex55
09.04.2014, 19:18
Как сохранить файл визуализации кдс с сохранением результатов измерений отображенных в нем? Возможно ли это? Спасибо.

kukla100
10.04.2014, 05:58
На аналоговом входе контроллера при измерении число с большим количеством знаков после запятой (25.249873 (real)). Как удалить не нужные знаки, что бы после запятой было хотя бы 2 знака

capzap
10.04.2014, 06:03
На аналоговом входе контроллера при измерении число с большим количеством знаков после запятой (25.249873 (real)). Как удалить не нужные знаки, что бы после запятой было хотя бы 2 знака
Умножить на сто, сделать трунк, перевести в реал,разделить на сто

Yegor
10.04.2014, 08:05
На аналоговом входе контроллера при измерении число с большим количеством знаков после запятой (25.249873 (real)). Как удалить не нужные знаки, что бы после запятой было хотя бы 2 знакаЕсли для отображения в стандартной визуализации, то используйте форматную строку %.2f в текстовом поле. Если для отображения в какой-то другой системе визуализации, то обратитесь к её документации. Если же для непосредственного использования в программе ПЛК, то вы что-то не так делаете. На самый крайний случай capzap сказал.

kukla100
10.04.2014, 14:46
Просто очень большая точность вывода информации, надо передвинуть запятую чтобы можно было оставить два или три, к примеру, знака после запятой. И число 25,249873 это уже градусы цельсия.

Валенок
10.04.2014, 23:10
См. #2830 без крайних случаев

Геннади_й
16.04.2014, 15:42
Добрый, день. Есть где-то такая схема ПЛК110_RS232 - RS232_АС3_RS485 - RS484_верхний уровень. И вот в этой сети есть еще одно устройство RS485. вся проблема в том что это доп.устройство работает на скорости не выше 38400. Сейчас настроено на скорость 115200, получается как-бы без доп. устройства. Так как опыта еще не было в настройке эксплуатации ОВЕНов следует вопрос-просьба подсказать как в ОВЕНе перенастроить скорость порта RS232? Спасибо.

capzap
16.04.2014, 15:48
Добрый, день. Есть где-то такая схема ПЛК110_RS232 - RS232_АС3_RS485 - RS484_верхний уровень. И вот в этой сети есть еще одно устройство RS485. вся проблема в том что это доп.устройство работает на скорости не выше 38400. Сейчас настроено на скорость 115200, получается как-бы без доп. устройства. Так как опыта еще не было в настройке эксплуатации ОВЕНов следует вопрос-просьба подсказать как в ОВЕНе перенастроить скорость порта RS232? Спасибо.

Обычно новички это делают в конфигураторе, для этого надо просто прочитать общий документ по конфигуратору

Алексей Геннадьевич
16.04.2014, 16:03
Обычно новички это делают в конфигураторе

А вы как-то по-другому делаете?:confused:
Более удобным способом?

capzap
16.04.2014, 17:59
А вы как-то по-другому делаете?:confused:
Более удобным способом?

Через библиотеку могу, если что

kukla100
20.04.2014, 16:07
Какие блоки надо использовать совместно с блоками ПД, ПИД из библиотеки Util.lib, что бы на выходе получить два выхода открыть-закрыть типа BOOL. Вроде блока управления сервоприводом.

ASo
20.04.2014, 16:14
В этом случае лучше не пользоваться util.lib и не пользоваться соответствующим блоком из OSCAT. Лучше самостоятельно переписать закон ПИД-регулирования в дифференциальной форме.

petera
20.04.2014, 16:26
Какие блоки надо использовать совместно с блоками ПД, ПИД из библиотеки Util.lib, что бы на выходе получить два выхода открыть-закрыть типа BOOL. Вроде блока управления сервоприводом.
Можно использовать VALVE_REG_NO_POS из библиотеки PID_Regulators.lib.
Где-то так, например.
12666

ASo
20.04.2014, 16:28
Только как отслеживать крайние положения?

kukla100
20.04.2014, 16:33
Вообще хочеться получить, что-то вроде ТРМ12 или ТРМ212

petera
20.04.2014, 16:45
Вообще хочеться получить, что-то вроде ТРМ12 или ТРМ212
Так и будет вроде ТРМ212 без датчика положения привода, даже импульсы доводки сделал.

ASo
20.04.2014, 17:03
Так почитайте инструкцию к нему, а лучше - к ТРМ32. Там написано, как это реализовать.

petera
20.04.2014, 20:42
Предложенный мной вариант в посте http://www.owen.ru/forum/showthread.php?t=10555&p=136187&viewfull=1#post136187 не теория, а реально работающий на объекте. Задача повторения ТРМ212 не ставилась, а требовалось "получить, что-то вроде ТРМ12 или ТРМ212"
А по сути он является вариантом предложенным здесь http://www.owen.ru/forum/showthread.php?t=15171&p=111633&viewfull=1#post111633
более подробно можно посмотреть здесь http://www.asutp-volgograd.com/1/post/2013/05/pid-regulator-codesys.html
http://www.asutp-volgograd.com/files/theme/pid_valve.gif
http://www.asutp-volgograd.com/files/theme/graphik.gif
В свой вариант добавил зону не чувствительности и т.к. у меня не используется датчик положения, то добавил в свой вариант формирование импульсов "доводки"
12672

RV9WFJ
21.04.2014, 07:45
А если в параметрах PID Y_MIN:=0 Y_MAX:=100 поставить и LIN_TRAFO убрать не тоже самое будет?

petera
21.04.2014, 10:54
А если в параметрах PID Y_MIN:=0 Y_MAX:=100 поставить и LIN_TRAFO убрать не тоже самое будет?
В случае если PID Y_MIN:=0 Y_MAX:=100, то для того, что бы было то же самое нужно задать Y_OFFSET:=50.

RV9WFJ
22.04.2014, 08:00
В случае если PID Y_MIN:=0 Y_MAX:=100, то для того, что бы было то же самое нужно задать Y_OFFSET:=50.petera я просто хочу разобраться для себя. По сути Y_OFFSET влияет только на положение клапана в момент инициализации (сброса) ПИДа. Не пойму зачем 50? Только для того чтоб клапан не закрывался в момент сброса ПИДа?

petera
22.04.2014, 09:44
petera я просто хочу разобраться для себя. По сути Y_OFFSET влияет только на положение клапана в момент инициализации (сброса) ПИДа. Не пойму зачем 50? Только для того чтоб клапан не закрывался в момент сброса ПИДа?
В том числе и для этого.
Если посмотреть на мой вариант, то видно - датчика положения клапана нет.
Регулятор может останавливаться от внешних сигналов -Stop_reg и Man(Ручной режим управления клапаном). При этом сбрасывается PID (Y:=Y_OFFSET) и сбрасывается VALVE_REG_NO_POS, и виртуальное положение клапана приравнивается к значению IN_Val:=50 импульсов управления на клапан нет.
Таким образом при включении регулятора или перехода из ручного режима в автоматический
если сигнал ошибки (SET_POINT-ACTUAL)=0, то импульсов на клапан нет
если сигнал ошибки (SET_POINT-ACTUAL)≠0, то VALVE_REG_NO_POS начнет работать от среднего положения клапана 50% и в зависимости от знака (SET_POINT-ACTUAL).
Не совпадение реального и виртуального положения клапана компенсируются импульсами доводки.

dr_alf
22.04.2014, 15:01
Подскажите пожалуйста как перевести ПИД-регулятор из библиотеки Util.lib в режим «холодильник». Мне нужно управлять клапаном с аналоговым входом 4...20ма.

petera
22.04.2014, 16:49
Подскажите пожалуйста как перевести ПИД-регулятор из библиотеки Util.lib в режим «холодильник». Мне нужно управлять клапаном с аналоговым входом 4...20ма.
На выходе PID (Y_MIN:=-100 Y_MAX:=100) ставите LIN_TRAFO для которого IN_MIN:=-100 IN_MAX:=100, а OUT_MIN:=20 OUT_Max:=4 на выходе LIN_TRAFO буден нужный Вам сигнал
ЗЫ. А в режиме "нагреватель" для LIN_TRAFO нужно установить IN_MIN:=-100 IN_MAX:=100, а OUT_MIN:=4 OUT_Max:=20

gladkiynikita
22.04.2014, 23:10
Здравствуйте. Есть ли возможность настроить плк 150 на работу сразу в 2 сетях - по rs-232 опрашивать через АС-2 приборы укт38 и по rs-485 опрашивать приборы трм 138?

RV9WFJ
23.04.2014, 06:30
Здравствуйте. Есть ли возможность настроить плк 150 на работу сразу в 2 сетях - по rs-232 опрашивать через АС-2 приборы укт38 и по rs-485 опрашивать приборы трм 138?Используя два порта ПЛК150 проблем нет.

melky
23.04.2014, 09:57
Вопрос: Надо в будние дни включать устройство с 6:30 до 8:30 и с 18:30 до 0:00.
Понятно, что мы берем из системного времени DayOfWeek и Hour и Minute. Как сделать диапазон в CFC для подобного диапазона лаконично, а то на ум только сплошные сравнения постоянные лезут.

Yegor
23.04.2014, 12:05
Ваше сообщение слишком короткое. Оно должно быть не менее 10 символов.

Валенок
23.04.2014, 12:15
))) Оригинально с временем.
Воскресенье это 0.

в развитие темы..
limialarm(hour+minute/100.0, low:=6.30, high:=8.30, il =>);

amn
23.04.2014, 13:02
Егор на форуме выкладывал гениальный пример из 3 строчек на ST. Так вот если его использовать, то можно получить очень даже лаконичное решение. Время задается в минутах.
12717

IgorCOM
23.04.2014, 15:10
У меня вопрос я хочу сделать (CDv3, написание в LD) после переменной отображение на экране (СПК207) картинки. Т.е. появился на входе (реле) сигнал - появился на выходе (катушка) сигнал, на выходе ( у меня привязано к картинке через Pool).
Это всё понятно, но возникает момент, когда мне нужна пульсация на выходе. Я знаю, что при создании проекта в Omron (NSJ), там есть уже таблица символов 12728 и там есть уже набор генераторов (выделенная строка для пульсации в 1 секунду). Есть ли подобное что то в CDv3. Я конечно могу поставить 2 таймера которые будут включатся и выключатся, что бы отображалось на конце цепи выход. Но есть ли проще варианты? Где-то я видел видео урок на CFC -- генератор, но меня интересует на LD что либо есть подобное, как на CX-programmer?

susanin
23.04.2014, 15:17
Коллеги. Возник вопрос. Не могу решить следующую задачу: Есть 3 входа(real input module), надо их загнать в массив из трех элементов. Понимаю что решение простое но сообразить не могу. Может кто подсказать как это реализовать??

amn
23.04.2014, 15:31
А простым присвоением не пробовали, 3 элемента это же не 100?
a[0]:=input1;
a[1]:=input2;
a[3]:=input3;

susanin
23.04.2014, 15:40
А простым присвоением не пробовали, 3 элемента это же не 100?
a[0]:=input1;
a[1]:=input2;
a[3]:=input3;

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

P.S.
в CodeSys новичек..

amn
23.04.2014, 17:08
Пока вижу один вариант - массив указателей..... Вот только с реализацией в CodeSys v2 не могу сообразить..


VAR
a: ARRAY [0..2] OF POINTER TO REAL;
init:BOOL;
x,y,z:REAL;
END_VAR
---------------
IF NOT init THEN (*один раз при старте*)
init:=TRUE;
a[0]:=ADR(input1);
a[1]:=ADR(input2);
a[2]:=ADR(input3);
END_IF

(*далее используем в программе*)

x:=a[0]^;
y:=a[1]^;
z:=a[2]^;

susanin
23.04.2014, 17:24
Спасибо!!!

melky
23.04.2014, 22:28
Yegor действительно умножать часы на 100 вместо привычных 60 оригинально, получаем как бы привычный вид времени в программе.
Валенок да, очень неудобно в SisLibTime с Воскресеньем, надо оскатовскую проверить, может там лучше будет, пока не смотрел. LimitAlarm тоже смотрел, отлично подходит когда интервал один, уже готовое решение.
amn спасибо, тоже гляну. В вашем примере явно лажа, сравнивать секунды с секундами нет смысла, когда о них и речи нет.

amn
24.04.2014, 01:31
melky, там вроде минуты, а не секунды.

Валенок
24.04.2014, 09:45
..LimitAlarm тоже смотрел, отлично подходит когда интервал один, уже готовое решение.
Чесно говоря чуток шутил ))))
Отличное.. Вы же нормально воспримите диапазон типа 23-00 .. 1-00. А оно ? Лучше уж заточите свою функцию например под TOD. Не менее наглядно.
Когда один.. Ну массив с циклом прилепить
Воскресенье .. Уйти на маски
Например:


program clock
var
std : systemtimedate;
now : tod;

..//получили время в std
now := dword_to_tod( ((std.hour*dword#60+std.minute)*60+std.second)*100 0 );



fb period
var_input
t0,t1:tod;
maskweek:byte; //маска с очеловеченым видом типа 2#11111_00 для пн..вск
var_output
q : bool;
var_const
w : array[0..6] of byte := 1,64,32,16,8,4,2;

q := (w[clock.std.dayofweek] and maskweek) <> 0;
q := q and sel(t0 >= t1, clock.now >= t0 and clock.now =< t1, clock.now >= t0 or clock.now =< t1);



plc_prg (?)
const
N : word := ..
var
ok : bool;
is : array[1..N] of period :=
(t0 := tod#6:30, t1 := tod#8:30, maskweek := 2#11111_00),
(t0 := tod#18:30, t1 := tod#23:59:59, maskweek := 2#11111_00);

clock();
ok := false;
for i:=1 to N do
is[i](q=>ok);
if ok then exit; end_if
end_for
..


PS
Пардон. Переводить в CFC - не очень хочется

melky
24.04.2014, 16:55
Валенок а для меня ST полутемный лес :) тут в нескольких строчках разбираться и разбираться.
amn out := datetime.Second >= after AND datetime.Second < before; - ну и где тут минуты ? да и сам по себе FB странно работает, но это мне надо с нуля его вписать в ПЛК, чтобы понять...

amn
24.04.2014, 18:34
melky, вы правы, я не тот файл отправил. Исправляюсь.

melky
24.04.2014, 18:49
amn , значит я правильно сообразил, как ваш FB модернизировать :), жалко только, что без контроллера нельзя проверить. Но самое интересное, что фактически это работает точно так же, как и LIMITALARM, только все обработки со временем внутри FB. Хотя может оно и лучше.
Вариант Валенка мне менее понятен, разбираться надо, не все мне там доступно для понимания с наскока.

amn
24.04.2014, 19:39
Вообще-то это творение Егора, а я его применил к вашему случаю. Валенок вообще молодец, додумался, как облегчить ввод данных. Там сложного ничего нет для понимания, просто часы он выделил в целую часть, а минуты в дробную. Выкладываю версию с идеей Валенка.
12751

melky
24.04.2014, 22:17
amn у CodeSys действуют правила математики ?
Часы + Минуты / 100.0 или (часы + Минуты)/100.0 - что из этого правильно ? или все выполняется строго последовательно ?

А вообще с точки зрения программирования, если ставить два и более FB interval, на сколько увеличивается цикл программы, учитывая, что постоянно вызывается CurTimeEx ? в некоторой степени выглядит все красиво, но куча повторов.

amn
25.04.2014, 10:07
Правила математики дейстуют как это и положено. А вот по поводу нескольких вызовов ФБ вы правы, стоит вынести CurTimeEx в самостоятельный отдельный блок, так как два блока могут не заработать вместе. Тогда наш ФБ будет состоять из 1 строчки:).

Во вложении два блока один из них get_time нужен для второго. Его просто вставить и ничего к нему подключать не надо.

melky
25.04.2014, 11:41
amn да нет, они то работают, просто видно что при двух FB повторяются действия. которые ненужны.

yurmik
25.04.2014, 17:02
Такая ситуация. ПЛК 110-60. К нему подключаю 2 модуля ввода/вывода с аналоговыми сигналами МВА и 2 модуля ввода/вывода с дискретными сигналами МДВВ. Протокол модбас рту. Вопрос такой, при записи регистров нужно ли учитывать последовательность подключения модулей или для каждого модуля регистры с нуля писать?

melky
25.04.2014, 17:09
yurmik у каждого устройства свой адрес вне зависимости 1-м он подключен на шлейфе или последним. адрес + регистры модуля по документации.

forpiv
28.04.2014, 06:22
Здравствуйте.
В наличии есть: ПЛК160-У-М, СП270, МВУ8, МВА8 и нулевой багаж знаний в программировании ПЛК.
Что надо сделать:
1. Завести в ПЛК 7 сигналов от термосопротивлений (заведены на МВА) и 2 сигнала 4-20мА (заведены на ПЛК). ПЛК их видит.
2. Отобразить все заведенные сигналы на СП270. Сигнал с термосопротивлений отобразил по подобию примеров с диска ПЛК. А вот 4-20 не получаеться, т.к. в ПЛК они заводятся в виде REAL, а в СП270 нашел отображение только в WORD.
3. В ПЛК будет крутится программа, работает с входными аналогами, дискретами и выходными дискретами (как нибудь, чего нибудь придумаю).
4. Вывести ВСЕ сигналы в формате 4-20 мА. Термосопротивления вывел с МВА, через ПЛК, на МВУ в формате WORD (снова по примеру), пока не смотрел как это выглядит в виде сигнала. Один 4-20 со входа ПЛК отправляю на выход МВУ. Второй 4-20 отправляю на выход ПЛК 0-10В (ПЛК160-У-М), а затем внешним преобразователем уже в 4-20 мА.
Вопросы:
В1. Как преобразовать REAL в WORD и обратно, либо как отобразить сигнал формата REAL в СП270.
В2. 4-20мА со входа ПЛК напрямую отправить на выход МВУ наверно не получиться. Нужен пересчет. Какой?
В3. 4-20мА со входа ПЛК напрямую отправить на выход ПЛК 0-10В тоже не получиться. Нужен пересчет. Какой?

С уважением. Илья

capzap
28.04.2014, 07:22
Здравствуйте.
В наличии есть: ПЛК160-У-М, СП270, МВУ8, МВА8 и нулевой багаж знаний в программировании ПЛК.
Что надо сделать:
1. Завести в ПЛК 7 сигналов от термосопротивлений (заведены на МВА) и 2 сигнала 4-20мА (заведены на ПЛК). ПЛК их видит.
2. Отобразить все заведенные сигналы на СП270. Сигнал с термосопротивлений отобразил по подобию примеров с диска ПЛК. А вот 4-20 не получаеться, т.к. в ПЛК они заводятся в виде REAL, а в СП270 нашел отображение только в WORD.
3. В ПЛК будет крутится программа, работает с входными аналогами, дискретами и выходными дискретами (как нибудь, чего нибудь придумаю).
4. Вывести ВСЕ сигналы в формате 4-20 мА. Термосопротивления вывел с МВА, через ПЛК, на МВУ в формате WORD (снова по примеру), пока не смотрел как это выглядит в виде сигнала. Один 4-20 со входа ПЛК отправляю на выход МВУ. Второй 4-20 отправляю на выход ПЛК 0-10В (ПЛК160-У-М), а затем внешним преобразователем уже в 4-20 мА.
Вопросы:
В1. Как преобразовать REAL в WORD и обратно, либо как отобразить сигнал формата REAL в СП270.
В2. 4-20мА со входа ПЛК напрямую отправить на выход МВУ наверно не получиться. Нужен пересчет. Какой?
В3. 4-20мА со входа ПЛК напрямую отправить на выход ПЛК 0-10В тоже не получиться. Нужен пересчет. Какой?

С уважением. Илья
Для начала внимательно изучите этот документ http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf чтоб с Вами можно было предметно разговаривать

forpiv
28.04.2014, 08:03
Земеля capzap, очень полезный совет. Рекомендуемый вами файл, есть на диске к ПЛК. И я естественное с ним ознакомился, нет не выучил наизусть, а ознакомился. Но так как опыт программирования у меня нулевой, то не все понял. Поэтому и попросил готовый "рецепт" решения банальной, с вашей точки зрения, проблемы.
Поиск по этому файлу у меня почему то не работает, а help по функциям в codesys почему то не полный. Однако "нашлась" функция REAL_TO_WORD, про которую help упрямо молчит. Будем дальше плясать с бубном :)
Уважаемый capzap, пишите ИСТЧЕ больше дельных, полезных, а главное простых советов.

capzap
28.04.2014, 08:14
По поводу поиска помоему Вам и к винде необходимо бубен искать, смотрите видео
а по поводу других преобразований, читайте еще и про LIN_TRAFO

forpiv
28.04.2014, 08:26
Вооот, пошел же предметный разговор. А поиск, на портабельном фоксит ридере на машине включенной в домен и запароленной по самое немогу, действительно почему то не работает. Кстати и хелп не всех программ способен штатно работать на машине включенной в домен (отдельный рахмат нашим системщикам). К примеру хелп автокад электрик и т.п.
Отдельное и ОГРОМНОЕ спасибо за быстрый ответ.

capzap
28.04.2014, 08:33
нерекоендовал бы в WORD преобразовывать, а то отрицательные значения будут плохо выглядеть, как в документации для этого нужен INT

melky
28.04.2014, 09:24
Так СП270 должна и Real показывать. раз уж ИП320 умеет или у СП270 с этим проблемы ?

capzap
28.04.2014, 10:39
Так СП270 должна и Real показывать. раз уж ИП320 умеет или у СП270 с этим проблемы ?

можно, только вместо одного реала получается передать два значения в интах, если конечно на панели не отображать немеренное количество знаков после запятой, это касается и ИП320 если что
делается это для того чтоб экономить трафик

Валенок
28.04.2014, 11:02
Чесно говоря, я не понимаю фразы "экономить трафик" уменьшением кол-ва регистров.
Что 1 регистр переслать, что 10 - время одно. Варианты ASC на 2400 я не рассматриваю. Про ИП320 - тоже самое.
Трафик экономится не кол-вом байт, а оптимизацией самого обмена.
Может кто-то доказать необходимость вывода данных "для посмотреть" быстрее 0.5-1с ?
К тому же большая часть данных - с мва8, а там само обновление - от 0.4сек.
Скорость же собственных быстрых Ai ПЛК нужна для максимально быстрой реакции выходов, или думаете что увидев изменение на экране оператор быстрее повлияет на выходы чем код ?

capzap
28.04.2014, 11:22
можно конечно и так рассуждать, вполне оправдано, но если я в панели веду архив показаний, то через месяц накопленных данных будет существенно заметна разница, если собирались инты а не реалы

Валенок
28.04.2014, 14:24
))) Это исключение. Но целый месяц и раз в секунду ? Причем что тут "только посмотреть" ? Не уверен что панель здесь оптимальна как хранитель.

kukla100
29.04.2014, 12:42
Скажите: если я задам время в вот в этом формате "T#7D", оно будет работать или нет? Или надо указывать в часах?

capzap
29.04.2014, 13:21
Скажите: если я задам время в вот в этом формате "T#7D", оно будет работать или нет? Или надо указывать в часах?

Че ходить вокруг да около, у Вас геработает или не знаете как узнать заработало или нет?

kukla100
29.04.2014, 13:28
Вопрос снимаю. Задал T#0.001D, проверил, всё работает. Значит "D" можно ставить.

melky
29.04.2014, 14:09
Такой вопрос, правда не знаю, возможно больше в тему SCADA систем. SCADA будет опрашивать счетчики через ПЛК+панель (на панели показания счетчиков и так же построение графиков), в случае обрыва связи со Scada возможно писать архив показаний со счетчика и при восстановлении связи, чтобы этот архив передавался в Scada ?
И вообще сколько может потребоваться места для архива если снятие показаний раз в секунду ? дофигища наверное, и как тогда быть ?

Валенок
29.04.2014, 20:52
И вообще сколько может потребоваться места для архива если снятие показаний раз в секунду ? дофигища наверное, и как тогда быть ?
Не, не дофигища - влезет в любую дамскую сумочку.

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

melky
29.04.2014, 23:23
Валенок насколько понимаю, в scade придется кодить потом чтение архива и водружение его на потерянную часть времени разрыва связи. С этим понятно.
Вопрос записи архива в плк, если его писать в CSV, насколько можно сэкономить пространства и сэкономится ли оно вообще ? REAL занимает 4 байта, например значение 220,37 в CSV займет байт 6 и как тут сэкономить пространство ?

Валенок
30.04.2014, 01:21
Формат:
csv,бинарник или что-то упакованное... 220,37 - прекрасно вписываются и в 2 байта
Точность:
А так уж нужны 7..8 значащих цифр ? Да еще -1е38..1е38 ? Для значительной части инженерки достаточно 3..4 знаков в достаточно узком диапазоне (0..16бар, -50..200*C, 0..100м3/ч и т.д.) Прямой или экспоненциальный масштаб - и иногда достаточно и 1 байта.
Логика:
Данные трепыхаются час 220,371..220,375 а после раз - и 345,67. И зачем целый час одно и тоже каждую секунду писать ? Может только при необходимом отклонении ?
Зачем вообще писать чего-то если все хорошо ? А вот накануне аварии поподробнее - самое то.

Комбинация этого - только от преполагаемого характера данных.

Yegor
30.04.2014, 09:00
Это ж как надо данные по файлу размазать, чтобы памяти ПЛК не хватило для журнала на время восстановления связи со скадой? И какова вообще вероятность аварии во время отсутствия связи со скадой?


И зачем целый час одно и тоже каждую секунду писать ?
Чтобы «накануне аварии поподробнее» было. По кругу надо писать, и всё.

Вот товарищ журналирование делал с периодическим скидыванием на ПК: http://owen.ru/forum/showthread.php?t=16563

melky
30.04.2014, 10:29
Валенок объекты удаленные, скорее всего будут висеть на модемах типа iRZ RUH, по крайней мере такие в спеке, VPN канал через GPRS. как всегда у нас бывает, либо оператор лег, либо деньги на симке кончились :)
Измерения согласен, не меняются скачками, это относится к электричеству, но вот расход воды он изменчив и сильно. Просто вопрос куда копать ?
То, что в ПЛК должно писаться циклом на определенное время (будет обговариваться по ТЗ) это понятно. Но как можно сократить данные так, чтобы архив мог растянуться на месяц например ?
Сделать график в ПЛК при обрыве связи или таки как-то в CSV ? Понимаю. что чтение архива в случае потери связи ляжет именно на SCADA...
Ессно куча знаков после запятой и не нужна, сотых достаточно.
Yegor спасибо, гляну, может поможет определиться

Валенок
01.05.2014, 11:18
Чтобы «накануне аварии поподробнее» было. По кругу надо писать, и всё
Вот чтоб «накануне аварии поподробнее» было, вовсе необязательно все подряд в файл. Можно только заданное временное окно с подробностями перед аварией.


PS
)))) А если вероятность обрыва, да еще и долгого низкая - csv без разговоров. Тут capzap тоже целый месяц автономки рассматривал. Прикидываю - куда автор плк закидывает, если на Луну за 8-12 дней оборачивались.


Ессно куча знаков после запятой и не нужна, сотых достаточно.
Значащие цифры это не запятые : 5,00 > 5,05 100 > 101. Тут и тут 1%. Сколько % необходимо для фиксации изменения ?

capzap
02.05.2014, 06:18
Сколько % необходимо для фиксации изменения ?можно ведь и усложнить вопрос, сколько, пускай процентов нужно, только вот от чего? От уставки или от предыдущего значения. Не зря поэтому в панелях архивирование ведется как по интервалу, так и по триггеру, кому что нужно тот тем и пользуется

melky
02.05.2014, 10:35
Валенок насколько долгая не скажу, но суть в том, что у юрлиц это в порядке вещей, пока прибегут в бухгалтерию, пока она оплатит, пока оплата пройдет, пока оператор опять включит симку.... бывает и сутки проходят....Россея....
За подсказку с процентами спасибо, не подумал как-то об этом.

Валенок
02.05.2014, 17:21
.. пускай процентов нужно, только вот от чего? От уставки или от предыдущего значения.
)) Оптимально - нового отклонения от уставки от старого отклонения от уставки.

Real легко вкладывается в 16 бит c значениями +-1.3E+-7 с отклонением после распаковки в real не более 0.1%. Это за глаза перекроет большинство требуемых значений для архиваций.

А если точности достаточно около 0.6%, в 16 бит укладывается весь диапазон real.

melky
05.05.2014, 10:53
Валенок проблема хранения данных счетчиков электроэнергии, сейчас 220,4 В на фазу, а через секунду 228,9В уже 0,96% от уставки 220В а может быть и 237В и так далее.
Понятно, пока связь со SCADA есть, на это все плевать, а вот если она оборвалась, надо как-то записывать данные со счетчиков на время восстановления связи и после восстановления чтобы SCADA загружала архив и восполняла пробелы в таблицах и графиках.
Счетчиков от 3-х штук и выше.

Boris_K
05.05.2014, 12:36
Можно ли как-то проинициализировать переменные, добавленные как регистры Модбас? То есть можно ли задать им какое-то начальное значение (кроме как вручную программно)?

Yegor
05.05.2014, 13:18
Только если вручную к адресам прибивать. Зато есть бонус — можно тут же флаги PERSISTENT/RETAIN задать. У меня в одном проекте так сделано. Естественно, адреса могут «уплыть». С этим надо быть внимательнее.

Boris_K
05.05.2014, 13:21
И когда могут поменяться адреса переменных?

Yegor
05.05.2014, 13:41
Когда выше этих регистров в дереве конфигурации что-нибудь добавите, удалите или замените. Если быть точнее, не сами адреса изменятся, а модули конфигурации на другие адреса попадут.

Валенок
06.05.2014, 11:39
..220,4 В на фазу, ...228,9В уже 0,96% от уставки 220В а может быть и 237В и
...
....А после минут двадцать стабильно 223.2В.
Ну Вы хоть по своим имеющимся данным оцените - нужно постоянно писать, или изменения. До сих пор не известна нужная точность. Может так и сохранять - % в 1 байте ?

melky
06.05.2014, 12:09
Валенок ну это уже по обстоятельствам, думаю народ переживет, если восстановленный график будет не идеальным, основная задача будет выполняться со SCADA онлайн....

RadistDog
07.05.2014, 15:35
Доброго дня всем!
Что-то не могу никак разобраться.
Прибор МВУ8-И (ver 2.05)
ModBus-RTU 9600-8-N-1
Проект создаётся на СПК207. В целом с обменом с модулями я разобрался - сейчас работает всё как дОлжно.
Записываю в МВУ8 в регистр со смещением 0х0000 командой 16 значение 0 или 500 или 1000, но прибор на выход не выдаёт то, что должен. Выдаёт обычно 20мА.
При управлении через конфигуратор выход управляется как положено. Правда, в конфигураторе, независимо от установленного протокола, значение на ВЭ предлагается подавать в виде REAL в диапазоне от 0,0000 до 1,0000. Т.е., к примеру, записываю через конфигуратор в регистр 0х0000 значение 0,5 и на выходе получаю желанные 12 мА. Тут не понятно, какое конфигуратор отправляет в регистр значение при установленном протоколе ModBus-RTU. Может конфигуратор ВСЕГДА общается с модулем по протоколу ОВЕН??
Я уже стал эксперементировать с режимом "Авария" по тайм-ауту. Установил параметр t.out в значение 20. А для ВЭ1 установил O.ALr в значение 0. И действительно, после обрыва линии связи через 20 секунд модуль зажигает сигнал "Авария" (начиная при этом ежесекундно обращаться ко всем ВЭ), но ВЭ1, ушедший в 20мА при появлении сигнала "Авария" почему-то не переходит на 4 мА! То есть модуль не отрабатывает то, что должен?? Потом я восстанавливаю линию связи, порт перезапускается, КДС показывает в онлайне что обмен по этому слейву восстановился, через вкладку "Соотнесение входов/выходов" опять же в онлайне я вижу что в этот адрес (единственный! сконфигурёный со смещением 0х0000 и длиной 1) посылается значение 500. Но ВЭ1 опять переходит в 20 мА!!! Ёпсель-Мопсель!!!!!

... опять подключаю конфигуратор, опять убеждаюсь в который раз что всё управляется как должно ...
... в проекте конфигурю слейв на запись командой 16 со смещения 0х0000 последовательностью длиной в 8 слов, прописываю в соотнесении массив из 8 WORDов - не работает...
... конфигурю в слейве 8 каналов, каждый записываю отдельной командой и отдельной (а так же одинаковой) переменной, думая что а вдруг я адресом ошибся (хотя по лампочкам на модуле то я вижу что ни хрена не ошибся!) -- не работает!

Видать я совсем ничего не понимаю... Помогите побороть МВУ8! Что я делаю неправильно???

dimonbest
07.05.2014, 16:34
Коллеги, доброго времени суток!
Прошу помощи с простым вопросом...
Пытаюсь программировать ПЛК 73. Как считать состояние дискретного входа и выдать сигнал дискретного выхода?
Прошу не смеяться, до этого программировал контроллеры MITSUBISHI серии FX, и там входы обозначались Х0...Хn и выходы Y0...Yn а тут непонятно(((

melky
07.05.2014, 17:49
RadistDog странно, почему real ? в РЭ для Modbus только int16 указан от 0 до 1000

Конфигуратор кажется и работает только по Овен протоколу

dimonbest зайдите в конфигурацию ПЛК, если вы установили таргет и обзовите входа и выхода как вам привычно.

dimonbest
07.05.2014, 17:56
melky, спасибо.
А вот как быть со светодиодами K1-K6?

melky
07.05.2014, 18:17
Что значит как ? это вроде ж светодиоды выходов? включите выход, он и загорится.

dimonbest
07.05.2014, 18:21
Похоже что нет, вот описание:

Контроллер имеет 6 встроенных светодиодов: K1, K2, K3, K4, K5 и K6, которые
позволяют создавать специализированные программные средства сигнализации о
прохождении процесса, обеспечивающие управление светодиодами из пользова-
тельской программы. Подробнее см. раздел 7 (Подробнее об этом см. в РП).
А что такое РП я так и не нашел...

melky
07.05.2014, 18:43
Руководство по Программированию, находится на сайте http://www.owen.ru/uploads/re_plc73_1634.pdf

Загляните в Additional [FIX] и вы найдете там светодиоды.

RadistDog
08.05.2014, 06:21
Доброго дня всем!
Что-то не могу никак разобраться.
Прибор МВУ8-И (ver 2.05)
ModBus-RTU 9600-8-N-1
Проект создаётся на СПК207. В целом с обменом с модулями я разобрался - сейчас работает всё как дОлжно.
Записываю в МВУ8 в регистр со смещением 0х0000 командой 16 значение 0 или 500 или 1000, но прибор на выход не выдаёт то, что должен. Выдаёт обычно 20мА.
При управлении через конфигуратор выход управляется как положено. Правда, в конфигураторе, независимо от установленного протокола, значение на ВЭ предлагается подавать в виде REAL в диапазоне от 0,0000 до 1,0000. Т.е., к примеру, записываю через конфигуратор в регистр 0х0000 значение 0,5 и на выходе получаю желанные 12 мА. Тут не понятно, какое конфигуратор отправляет в регистр значение при установленном протоколе ModBus-RTU. Может конфигуратор ВСЕГДА общается с модулем по протоколу ОВЕН??
Я уже стал эксперементировать с режимом "Авария" по тайм-ауту. Установил параметр t.out в значение 20. А для ВЭ1 установил O.ALr в значение 0. И действительно, после обрыва линии связи через 20 секунд модуль зажигает сигнал "Авария" (начиная при этом ежесекундно обращаться ко всем ВЭ), но ВЭ1, ушедший в 20мА при появлении сигнала "Авария" почему-то не переходит на 4 мА! То есть модуль не отрабатывает то, что должен?? Потом я восстанавливаю линию связи, порт перезапускается, КДС показывает в онлайне что обмен по этому слейву восстановился, через вкладку "Соотнесение входов/выходов" опять же в онлайне я вижу что в этот адрес (единственный! сконфигурёный со смещением 0х0000 и длиной 1) посылается значение 500. Но ВЭ1 опять переходит в 20 мА!!! Ёпсель-Мопсель!!!!!

... опять подключаю конфигуратор, опять убеждаюсь в который раз что всё управляется как должно ...
... в проекте конфигурю слейв на запись командой 16 со смещения 0х0000 последовательностью длиной в 8 слов, прописываю в соотнесении массив из 8 WORDов - не работает...
... конфигурю в слейве 8 каналов, каждый записываю отдельной командой и отдельной (а так же одинаковой) переменной, думая что а вдруг я адресом ошибся (хотя по лампочкам на модуле то я вижу что ни хрена не ошибся!) -- не работает!

Видать я совсем ничего не понимаю... Помогите побороть МВУ8! Что я делаю неправильно???

И ещё, кстати, один момент - в Руководстве по эксплуатации (далее РЭ) сказано, что для непосредственного управления ВЭ по сети RS-485, в случае когда ШИМ на ВЭ не предполагается (как раз мой вариант), нужно выставить параметр tphd в НОЛЬ. А в конфигураторе можно выставить только значение 00:01. Конфигуратор вообще не считает возможным установить 0 в этом параметре (см. скриншот). Кто прав - РЭ или конфигуратор?
12846

dimonbest
08.05.2014, 10:21
Загляните в Additional [FIX]
melky, Спасибо - помогло.
Там же разобрался как обрабатывать кнопки на панели.
Скачал библиотеку для работы с LCD - тоже разобрался.
Но есть еще вопросы. В контроллерах MITSUBISHI есть аппаратные переменные M0...M8000 типа boolean. В ОВЕН есть такие, или каждую переменную нужно объявлять? И как ее объявлять чтоб она сохраняла значение после пропадания питания?

Yegor
08.05.2014, 10:48
И как ее объявлять чтоб она сохраняла значение после пропадания питания?См. несколько сообщений выше мой ответ юзеру Boris_K.

IrinaS
08.05.2014, 12:33
Здравствуйте. Хотела бы спросить у вас, знающих людей. Есть учебная задача: при нажатии кнопки пуск загорается лампа 1, горит 1 сек, гаснет, загорается лампа 2, горит 1 сек гаснет, и так 3 лампы. Затем цикл повторяется в обратную сторону. Я реализовала на CFC: из 3ех таймеров TOF и 3ех генераторов импульса F_TRIG. Пуск организовала R_TRIG далее сигнал поступает на таймер TOF (выход Q у него лампа 1), затем сигнал идет на F_TRIG, с него опять на таймер TOF (выход Q у него лампа 2).. И так для трех ламп.

Это не очень умно и хотелось бы узнать как можно сделать цикл например на ST, а в CFC обойтись 1им таймером. Возможно ли это? Спасибо.

capzap
08.05.2014, 13:24
Здравствуйте. Хотела бы спросить у вас, знающих людей. Есть учебная задача: при нажатии кнопки пуск загорается лампа 1, горит 1 сек, гаснет, загорается лампа 2, горит 1 сек гаснет, и так 3 лампы. Затем цикл повторяется в обратную сторону. Я реализовала на CFC: из 3ех таймеров TOF и 3ех генераторов импульса F_TRIG. Пуск организовала R_TRIG далее сигнал поступает на таймер TOF (выход Q у него лампа 1), затем сигнал идет на F_TRIG, с него опять на таймер TOF (выход Q у него лампа 2).. И так для трех ламп.

Это не очень умно и хотелось бы узнать как можно сделать цикл например на ST, а в CFC обойтись 1им таймером. Возможно ли это? Спасибо.



VAR_INPUT
start: BOOL;
END_VAR
VAR_OUTPUT
lamp1 : BOOL;
lamp2 : BOOL;
lamp3 : BOOL;
END_VAR
VAR
oldStart: BOOL;
buffer: WORD;
tik: TON;
END_VAR

IF start AND NOT oldStart THEN
buffer.0:=TRUE;
ELSIF NOT start THEN
buffer:=0;
END_IF;
oldStart:=start;
IF tik.Q THEN
buffer:=SHL(buffer,1);
IF buffer>4 THEN buffer:=1; END_IF;
END_IF;
tik(IN:=NOT tik.Q AND start,PT:=T#1s);
lamp1:=buffer.0;
lamp2:=buffer.1;
lamp3:=buffer.2;
можно с этого начать

Boris_K
08.05.2014, 13:30
Конечно, хватит и одного таймера, потому что в любой момент времени у вас может гореть только 1 лампа. Просто при переходе к следующей лампе "перезаряжаете" таймер. На ST сделать - проще простого, это нормальный язык программирования, сродни Паскалю и С++, лучше делать на нём чем диаграммами, он мощнее и во многом удобнее. Всё что вам нужно для этой задачи - условный оператор. Таймер кстати можно сделать вручную, просто обращаясь к системному времени в ПЛК - это счётчик миллисекунд с момента включения ПЛК (функция TIME). Такой способ потенциально более гибкий.

Василий Кашуба
08.05.2014, 13:52
... На ST сделать - проще простого, это нормальный язык программирования, сродни Паскалю и С++, лучше делать на нём чем диаграммами, он мощнее и во многом удобнее. ...
Кому как, мне проще на CFC
12849
Мне так нагляднее. :)

IrinaS
08.05.2014, 16:25
Конечно, хватит и одного таймера, потому что в любой момент времени у вас может гореть только 1 лампа. Просто при переходе к следующей лампе "перезаряжаете" таймер. На ST сделать - проще простого, это нормальный язык программирования, сродни Паскалю и С++, лучше делать на нём чем диаграммами, он мощнее и во многом удобнее. Всё что вам нужно для этой задачи - условный оператор. Таймер кстати можно сделать вручную, просто обращаясь к системному времени в ПЛК - это счётчик миллисекунд с момента включения ПЛК (функция TIME). Такой способ потенциально более гибкий.

А могли бы Вы свою логику продемонстрировать в кусочке программы? Не очень понимаю "перезарядку" таймера и организацию цикла.
Я представляю горящие лампы массивом в цикле for. Сначала с 1ой лампы по 3ью затем с 3ьей лампы по 1.
Но нужен, видимо, функциональный блок или функция, состоящая из таймера, сдвигового регистра, за счет которой шло бы переключение во времени.
Как это сделать - не понимаю

amn
08.05.2014, 17:09
Посмотрите пример уважаемого Capzapа. Там все это есть. Переменная buffer содержит 16 бит (это вместо массива). Используются первые 3 бита (buffer.0, buffer.1, buffer.2). Цикл организовывать не надо, контроллер и так в цикле работет. Также используется функция SHL(), которя сдвигает биты переменной влево.
Под "Перезарядкой" таймера имелось в виду отключить и снова включить вход таймера IN, после того, как он отработает. В примере Capzapа это реализовано так: инвертированный выход с таймера подается ему же на вход, получается такой простенький генератор импульсов.

Alexcei64rus
09.05.2014, 00:22
Здравствуйте.
Есть сервер с 2 сетевыми картами (1-промышленная и 2-локальная сеть). IP отличаются последней цифрой, маски одинаковые, шлюз в настройках первой не указан. ПЛК100 конектится через 1, но необходимо его подключить через локальную сеть. Адреса карт менять нельзя (настроена туча вражеского софта). Есть ли выход из данного положения?

capzap
09.05.2014, 08:27
Здравствуйте.
Есть сервер с 2 сетевыми картами (1-промышленная и 2-локальная сеть). IP отличаются последней цифрой, маски одинаковые, шлюз в настройках первой не указан. ПЛК100 конектится через 1, но необходимо его подключить через локальную сеть. Адреса карт менять нельзя (настроена туча вражеского софта). Есть ли выход из данного положения?

В чем подвох, если одна и таже подсеть получается, какие трудности с подключением контроллера?

Dimooon
09.05.2014, 09:08
Здравствуйте, подключил модуль дискретного ввода МВ110-16ДН к ПЛК100-24КМ. Работать не хочет. Что я сделал не так? Подскажите пжс.

Alexcei64rus
09.05.2014, 10:13
В чем подвох, если одна и таже подсеть получается, какие трудности с подключением контроллера?
У материнки сервера 2 сетевых порта, к ним подключены 2 свича. Подключаю через один -связь есть, через другой "Ошибка связи #0". Как в КоДеСисе указать через какой порт устанавливать связь?

Yegor
09.05.2014, 12:51
Как в КоДеСисе указать через какой порт устанавливать связь?Никак. Винда абстрагирует сетевые порты. Брэндмауэр, может?

Константин Владимирович
12.05.2014, 11:34
Товарищи! Подскажите чайнику, а то я себе весь моск сломал:
Как организовать в PLC 110-160 алгоритм работы нескольких двигателей так, чтобы первым запускался двигатель с меньшей наработкой. А в идеале, чтобы еще и отключался первым тот у которого эта наработка больше. С подсчетом времени наработки вроде бы разобрался (использую блок ONTIME oscat-овской библиотеки)
Заранее спасибо за ответ.

Boris_K
12.05.2014, 12:11
Для подсчёта наработки не надо лезть в биб-ки, есть стандартная функция TIME() - время от включения ПЛК (в мс). По ней и считайте. Создайте массив со значениями наработок для движков. Для определения движка с минимальной наработкой можно пойти простым логическим ходом, например так:

minimal:=999999999;
for a:=0 to n do

if narabotki[a] < minimal then
minimal:=narabotki[a];
b:=a;
end_if;

end_for;

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

Константин Владимирович
12.05.2014, 12:43
Борис, спасибо за ответ, но после него мой уровень упал с "чайника" до "мееега чайника":) А как это провернуть на языке CFC? а то я пока кроме него мало знаю:(

Boris_K
12.05.2014, 15:31
На CFC сам не пишу, только на курсах когда был, на нём всё делали, но после ST я понял насколько всё будет муторно этими диаграммами делать. Мой вам совет - пишите потихоньку на ST, он мощнее, и не надо возиться с этими линиями входов-выходов. Ничего сложного, особенно если знакомы с программированием даже на школьном уровне. По сути - те же диаграммы, только в виде текста, и с более гибкими возможностями.

amn
12.05.2014, 16:00
Есть вещи, которые на CFC сделать проблематично (например циклы), а на ST очень просто. Для этого делаете функциональный блок по примеру Бориса на языке ST, а потом используйте его в своей CFC программе.

Dimooon
13.05.2014, 09:31
А есть какая-нибудь литература по ST? А то действительно, CFC понятный, но громоздкий.

kolyan
13.05.2014, 10:55
А есть какая-нибудь литература по ST? А то действительно, CFC понятный, но громоздкий.

Об этом много раз говорили на форуме. Пожалуйста, в следующий раз пользуйтесь поиском.

"Петров И.В. (2004) Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования"

http://lib-bkm.ru/load/1-1-0-56

Константин Владимирович
13.05.2014, 11:06
Есть вещи, которые на CFC сделать проблематично (например циклы), а на ST очень просто. Для этого делаете функциональный блок по примеру Бориса на языке ST, а потом используйте его в своей CFC программе.
Пытаюсь создать этот блок.
Подскажите, что не так делаю?12885

Валенок
13.05.2014, 11:24
array of для наработок

Константин Владимирович
13.05.2014, 11:31
array of для наработок
где это нужно прописать?

Boris_K
13.05.2014, 13:37
В объявлениях (VAR) нужно написать:

narabotki:ARRAY[0..n] OF DINT;

Так объявляется массив. В данном случае - набор переменных типа DINT, обращение к которым происходит по индексу от 0 до n (В объявлении вместо n поставить максимальный индекс). И почему вы используете тип DINT? Так как время наработки всегда неотрицательно, лучше возьмите DWORD, получите вдвое большее макс. значение. Чтобы увидеть справку по целочисленным типам, ставьте курсор на слово с типом данных и жмите F1. Вообще, смотрите в справке, там всё описано. :)

P. S. DWORD - неотрицательный тип, имеет полный диапазон, представляемый четырьмя байтами, то есть переменная может принимать значения от 0 до 4294967295. Если у вас время представлено в миллисекундах, то максимальный отрезок времени, который можно хранить в четырёхбайтовой переменной - около 49 суток, после чего диапазон переполнится и всё начнётся с нуля. Если нужно больше, можно написать собственный тип данных, или же сразу переводить в секунды например или в минуты, в зависимости от того, какая точность требуется.

Константин Владимирович
13.05.2014, 15:18
Я интуитивно догадываюсь, но хотелось бы уточнить...:rolleyes: так это должно выглядеть?12892
Просто с совсем новичок в этом деле.

amn
13.05.2014, 15:34
Сразу желательно определиться какие будут входы и выходы у вашего ФБ, чтобы его удобно можно было использовать. Сколько у вас двигателей? Если двигателей много, то может есть смысл сделать массив, элементами которого будет структура, состоящая из двух переменных: номер двигателя и его наработка. Тогда наработка будет привязана к конктерному двигателю, а не к индексу массива и элементы в массиве можно менять местами при необходимости (например если надо будет отсортировать массив по возрастанию времени наработки).

melky
13.05.2014, 15:36
Не совсем. Массив должен быть от 0 до n, где n= количеству насосов.
Массив можно сделать с небольшим запасом, например 10, а n оставить в программе и менять количество насосов до 11. Ну не столько же 4 c чем-то миллиардов :)
А вот значение minimal можно сделать не DINT а DWORD, увеличив тем самым то, о чем говорил Boris_K

Константин Владимирович
13.05.2014, 15:51
. Сколько у вас двигателей?
Пока речь идет о двух двигателях.
Ребята, кому не сложно, выложите скрин- как это должно выглядеть. а то чувствую, я до ночи сегодня тут буду сидеть:(

Boris_K
13.05.2014, 17:07
Вы перепутали макс. значение и индекс. Макс. значение - это просто максимальное значение которое может принимать переменная (то есть элемент массива в данном случае), а индекс - это просто НОМЕР данной переменной в массиве (начинается с нуля). Соответственно, если у вас 2 движка, то нужно всего два индекса - 0 и 1. То есть вместо n написать 1. И тогда массив будет состоять всего из 2 элементов (с индексами 0 и 1). Вы же объявили массив из 4294967296 элементов, и на каждый по 4 байт, итого отхапали 16 гигабайт памяти (если бы ПЛК позволял) ;) Исправляйте немедленно.

Константин Владимирович
13.05.2014, 17:22
А в остальном всё правильно? Все равно не до конца понимаю.

amn
13.05.2014, 18:12
Алгоритм решения:
1. Если пришли сигналы включить оба двигателя, то включаем оба двигателя без всяких условий.
2. Если сигналов нет. Отключаем оба двигателя без всяких условий.
3. Если на входе только один сигнал (должен быть включен только один двигатель), то имеем 3 варианта:
1). Включены оба двигателя. Выключаем двигатель с наибольшей наработкой.
2). Выключены оба двигателя. Включаем двигатель с наименьшей наработкой.
3). Включен один из двигателей. Не делаем ничего, нам это и нужно.

В программе написал комментарии, так что разберетесь. Правда цикл не использовал, так как всего 2 насоса, но массив есть:).

Константин Владимирович
13.05.2014, 18:56
Спасибо, дружище!
;)
Только обьясни чайнику, откуда время берется, и где бы эти моточасы окоянные подсмотреть?

amn
13.05.2014, 22:02
В массиве моточасы хранятся. a[0] - время наработки первого двигателя, a[1] - время наработки второго двигателя. Только учтите, когда будете время туда записывать, тип элементов массива DWORD, может надо будет преобрабовать из TIME или в каком там виде у вас время.

melky
13.05.2014, 23:09
pp: ARRAY [0..20] OF BYTE; - что означает ввод Адреса ?
pp AT 0: ARRAY [0..20] OF BYTE; - после АТ должен идти адрес, сообщает CodeSys - а какой адрес ? как его задавать то ?
pp: POINTER TO ARRAY [0..20] OF BYTE; - в эмуляции, обращение к несуществующему адресу ПЛК остановлен ?

Что-то в документации все размыло или вообще нет ничего

amn
13.05.2014, 23:41
pp: POINTER TO ARRAY [0..20] OF BYTE; - в эмуляции, обращение к несуществующему адресу ПЛК остановлен ?

Посмотреть, как делать указатель на массив можно здесь (http://www.owen.ru/forum/showthread.php?t=17265&p=136768&viewfull=1#post136768). Надо использовать структуру.

melky
14.05.2014, 00:00
amn а если конфигурации нет ?

amn
14.05.2014, 01:04
melky вообще-то сейчас попробовал, можно обойтись и без структуры.

VAR
b:ARRAY[0..3] OF WORD;
ptr:POINTER TO WORD;
c1:WORD;
c2: WORD;
END_VAR

ptr:=ADR(b[0]); (*адрес первого элемента массива*)
c1:=ptr^;
ptr:=ptr+2;
c2:=ptr^;

Указатель делаем на первый элемент массива.

Константин Владимирович
14.05.2014, 10:07
когда будете время туда записывать, тип элементов массива DWORD, может надо будет преобрабовать из TIME или в каком там виде у вас время.
А как их туда записывать из переменных?

amn
14.05.2014, 10:31
Обычным присвоением a[0]:=время_наработки;
Посмотрите подробно в документации CoDeSys_V23_RU.pdf про массивы стр. 332. А лучше сначала почитайте книгу Игоря Петрова, сразу куча вопросов отпадет.

Константин Владимирович
14.05.2014, 11:41
Обычным присвоением a[0]:=время_наработки;
перечитал стр.332. хоть понял что значат эти символы:) но не понял где это нужно присваивать?:confused:

melky
14.05.2014, 12:12
amn немного стало понятнее. в CFC это выглядит как объявление переменной массива
b: ARRAY [0..10] OF BYTE

а потом в программе b---|ADR|---на вход функции, требующей на входе POINT TO ARRAY[0..10] OF BYTE (пример)

amn
14.05.2014, 19:09
melky, уточню, в программе ADR не всего массива, а его первого элемента, то есть b[0].

melky
15.05.2014, 12:31
amn так он адрес первого элемента и ставит, уже проверил, работает в CFC :)
Проверял на oscat CRC_GEN

GoodLuck
15.05.2014, 12:51
Подскажите, пожалуйста! Известен адрес начала строки и длина строки. С помощью какой функции можно записать содержимое строки в строковую переменную?

amn
15.05.2014, 13:44
Посмотрите здесь (http://www.owen.ru/forum/showthread.php?t=14852&p=108929&viewfull=1#post108929) похожий пример.

Alexcei64rus
15.05.2014, 19:06
У материнки сервера 2 сетевых порта, к ним подключены 2 свича. Подключаю через один -связь есть, через другой "Ошибка связи #0". Как в КоДеСисе указать через какой порт устанавливать связь?
Одному свичу не понравился MAC-адрес ПЛК100. Изменил. Проблема решена.

Yegor
16.05.2014, 07:04
Известен адрес начала строки и длина строки. С помощью какой функции можно записать содержимое строки в строковую переменную?SysMemCpy (SysLibMem.lib)

figarokj
16.05.2014, 13:45
Подскажите, пожалуйста. Не могу установить связь модуля ввода МВ 110 -8 АС с компом. Использую цепочку модуль ввода + преобразователь интерфейса АС 4 + комп. Поставил конфигуратор для модуля, дрова для преобразователя.

Василий Кашуба
16.05.2014, 14:15
Подскажите, пожалуйста. Не могу установить связь модуля ввода МВ 110 -8 АС с компом. Использую цепочку модуль ввода + преобразователь интерфейса АС 4 + комп. Поставил конфигуратор для модуля, дрова для преобразователя.
Проверьте параметры связи и адреса.

ЕвгенийД
21.05.2014, 11:42
Подскажите, пожалуйста. Начал разбираться с примером 02_04_PLC1xx+MVA+IP320[Slave]_emulatorTRM1 - подскажите как загрузить конфигурацию для ПЛК110-60 в Codesys. Проект загружается без конфигурации.

Darkmen999
21.05.2014, 17:43
ЕвгенийД
Я являюсь новичком, но постараюсь помочь.
Нужно установить Target-файлы для нужного ПЛК и в проекте в настройках целевой платформы указать конфигурацию.
С загрузкой примеров была подобная проблема, но выше указанные операции исправили ее.

Darkmen999
22.05.2014, 15:05
Здравствуйте еще раз.
Имеется ПЛК73 , таргет файл и сам КДС версии 2.3.9.40 установил с диска, который прилагался к ПЛК.
В ПК отсутствует COM-port, поэтому был куплен переходник, который позволяет подключать RS-232 в USB-порт.
Написал программу, настроил конфигурацию, посмотрев видео с диска, настроил параметры связи и подключился по RS232-DBGU. Режим онлайн работает стабильно, но постепенно качество связи падает и появляется ошибка подключения, в некоторых случаях КДС виснет и появляется сообщение, что debug automation alliance не отвечает. Со вчерашнего дня подключение не выполняется вообще. Нажимая на кнопку онлайн, ничего не происходит, никаких ошибок не выдается, но связи с ПЛК нет. Так как максимальная скорость переходника 9600 бит/с, пробовал в параметрах связи изменить с 115200 на 9600, сразу выдается ошибка подключения.
Возможно подобный вопрос уже задавался, но поиски по форуму мне ничего не дали. С ПЛК и программированием в КДС познакомился совсем недавно и многое очень непонятно. Прошу хотя бы намекнуть как разрешается данная проблема и разрешается ли вообще.
Заранее огромное спасибо.

RV9WFJ
23.05.2014, 06:56
На сколько я понимаю проблема как раз в скорости, так как ПЛК предназначен заливаться исключительно со скоростью 115200. Когда-то выяснял этот вопрос у разработчиков так как по радиомодему были мысли прошивать.
А что за переходник такой на 9600, вы ничего не путаете? Если вы скорость исключительно в свойствах Win смотрите то это еще не означает что он только на ней работает. Debug же через USB постоянно отваливается, это практически нормально :-) Я так понимаю это больше проблема драйверов и Win чем самого ПЛК. Спасает простое отключение/подключение переходника + рестарт GateWay.

Darkmen999
23.05.2014, 09:48
RV9WFJ
Насчет скорости переходника, вы правы, спутал. Максимальная скорость передачи данных до 921.6 Кбит/с. Но тем не менее при отладке программы скорость ощутимо маленькая.
Я так понял, если USB отваливается при подключении к КДС, то реализовывать SCADA на принципе DEBUG->USB бессмысленно. Думаю купить к ПК плату с COM-портом, надеюсь там подобных сбоев не будет. А вот как быть с ноутбуком...
Насчет переподключения разъема и рестарта GateWay спасибо, попробую. НО, теперь подключения в КДС вообще не осуществляется и отладка программы не происходит, к тому же никаких ошибок и GateWay видит подключенный порт. Теперь грешу на ПЛК, не случилось ли в нем сбоев, а это уже страшнее.

melky
23.05.2014, 22:40
При попытке переделдать библиотеку CodeSys столкнулся с проблемой.
При загрузке программы в ПЛК выдается сообщении "Неразрешенные ссылки на внешние POU"

библиотека не чужая (не от ПЛК63/73), просто переделанная.

Что влияет на подобную ошибку кроме данной ситуации ?

RV9WFJ
26.05.2014, 08:39
RV9WFJ
Я так понял, если USB отваливается при подключении к КДС, то реализовывать SCADA на принципе DEBUG->USB бессмысленно. Думаю купить к ПК плату с COM-портом, надеюсь там подобных сбоев не будет.Правильно думаете, у некоторых конечно USB нормально работает(похоже от материнки зависит и чипа USB) но лучше не рисковать.

А вот как быть с ноутбуком...
Насчет переподключения разъема и рестарта GateWay спасибо, попробую. НО, теперь подключения в КДС вообще не осуществляется и отладка программы не происходит, к тому же никаких ошибок и GateWay видит подключенный порт.Попробуйте к терминальной программе подключить портом Debug, в порт должна отладочная информация идти сразу после включения.

RV9WFJ
26.05.2014, 08:41
При попытке переделдать библиотеку CodeSys столкнулся с проблемой.
При загрузке программы в ПЛК выдается сообщении "Неразрешенные ссылки на внешние POU"
библиотека не чужая (не от ПЛК63/73), просто переделанная.
Что влияет на подобную ошибку кроме данной ситуации ?По тексту ошибки похоже, что ссылается на СИшные вставки которых нет. Соответственно возможно в первоначальном варианте библиотеки они были? Или все таки библиотека не для этого ПЛК.

melky
26.05.2014, 11:17
RV9WFJ библиотека Mercury.lib, пытаюсь переделать для работы через SysLibCom. Сейчас просто экспортировал в проект, если сохранять как внешнюю библеотеку, вызывает данную ошибку, если как внутреннюю, то вроде не вызывает.
Длблюсь с ними дальше, особого результата пока нет. Особенно учитывая описание SysLibCom, когда при SysComSetSetings при установки должно возвращаться TRUE, а по факут примеров 0.....
Бред описания ? Бред ОВЕНовских контроллеров (прошивка) ? непонятно чему верить...
При чем находил пример для обмена с другим устройством и программой на SFC, там таки TRUE проверяют....