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

A.Simonov
20.09.2018, 09:15
Здравствуйте!
В общем, проблема такого характера: все задействованные дискретные входы ПЛК-110 в CoDeSys'е при подключении к ПЛК дают true, хотя кнопка не нажата и датчик не срабатывает (кнопка и датчик - входные устройства). В самом ПЛК всё отображается корректно, нажал кнопку - загорелась лампочка над соответствующим входом. Что с этим можно сделать?

Добрый день.

Такое происходит только с подключенными входами?
Если ко входу ничего не подключено, то в программе все в порядке?
Укажите полную модификацию ПЛК, версию прошивки (команда PLCInfo в ПЛК-Браузере)
Приложите схему подключения.
Приложите скрины из приложения, где видно что входы - TRUE, и фото, где видно что диоды не горят.
Желательно приложить проект.
Можно сюда, а можно и на почту a.simonov@owen.ru

alexxx
20.09.2018, 10:29
Помогите, не могу создать структуру из двух массивов! Есть два массива, [1..7] и [1..7,1..600]. Как их можно объединить в один массив [1..7,1..601]? Подскажите.

A.Simonov
20.09.2018, 17:44
Помогите, не могу создать структуру из двух массивов! Есть два массива, [1..7] и [1..7,1..600]. Как их можно объединить в один массив [1..7,1..601]? Подскажите.

Немного не понял что нужно сделать.
Попробуйте объяснить еще раз, другими словами?

Как Вашу задачу понял я:
Есть два массива. Нужно создать третий массив и в него копировать элементы первых двух.
Я вижу это так:
38822

petera
20.09.2018, 18:41
Есть два массива, [1..7] и [1..7,1..600]. Как их можно объединить в один массив [1..7,1..601]? Подскажите.
Нет решения - размерность строк у массивов разная
у первого - 7 элементов
у второго - 600
Можно только два массива, [1..7] и [1..600,1..7] объединить в такой [1..601,1..7]

Быстро и эффективно:

VAR
A: ARRAY [1..600,1..7] OF WORD;
B: ARRAY [1..7] OF WORD;
C: ARRAY [1..601,1..7] OF WORD;
END_VAR

SysMemCpy(ADR(C), ADR(A), SIZEOF(A)); (*Копируем весь массив A[1..600,1..7] в начало массива С[1..601,1..7]*)
SysMemCpy(ADR(C) + SIZEOF(A), ADR(B), SIZEOF(B)); (*теперь в последнюю строку(601) массива С[1..601,1..7] копируем строку из массива B:[1..7]*)


Используется библиотека SysLibMem
38823

ЗЫ.
Функция SysMemCpy() в эмуляторе не работает. Только в ПЛК
Для проверки можно использовать PLCWinNT

alexxx
20.09.2018, 22:30
Немного не понял что нужно сделать.
Попробуйте объяснить еще раз, другими словами?

Как Вашу задачу понял я:
Есть два массива. Нужно создать третий массив и в него копировать элементы первых двух.
Я вижу это так:
38822
Массивы большие, на FOR много времени уходит

Нет решения - размерность строк у массивов разная
у первого - 7 элементов
у второго - 600
Можно только два массива, [1..7] и [1..600,1..7] объединить в такой [1..601,1..7]
Вот спасибо, это уже похоже на то что мне нужно. Буду изучать.
А из большого массива извлечь кусок в другой массив похожим способом возможно?
У меня большой массив данных, 600 строк по 7 значений в каждой. Нужно быстро сдвигать все строки наверх, а вниз записывать новый ряд из 7ми значений. Вот и думаю как это попроще сделать.

petera
21.09.2018, 07:51
Массивы большие, на FOR много времени уходит

Вот спасибо, это уже похоже на то что мне нужно. Буду изучать.
А из большого массива извлечь кусок в другой массив похожим способом возможно?
У меня большой массив данных, 600 строк по 7 значений в каждой. Нужно быстро сдвигать все строки наверх, а вниз записывать новый ряд из 7ми значений. Вот и думаю как это попроще сделать.
Запросто!


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

Использовать функцию SysMemMove
копирует указанное число байт из одного блока памяти в другой.

В отличие от SysMemCpy, позволяет копировать данные пересекающихся блоков

petera
22.09.2018, 00:21
По просьбе alexxx реализация сдвига строк массива вверх на одну строку

PROGRAM PLC_PRG
VAR
A: ARRAY [1..600,1..7] OF WORD;
shift_up: BOOL; (*команда на сдвиг массива*)
SIZE_LINE: DWORD; (*Длина одной строки в байтах*)
RT1: R_TRIG;
END_VAR

SIZE_LINE:= SIZEOF(A[1,1]) * 7; (*в общем случае элементы массива могут быть не только WORD*)
RT1(CLK:= shift_up); (*Ловим фронт команды на сдвиг массива*)
IF RT1.Q THEN
SysMemMove(ADR(A), ADR(A) + SIZE_LINE, SIZEOF(A)- SIZE_LINE);
(*следующая строка не обязательная. Это обнуление последней строки массива*)
SysMemSet(ADR(A) + SIZEOF(A)- SIZE_LINE, 0, SIZE_LINE);
END_IF

DIPHENHYDRAMINE
24.09.2018, 21:25
Ребята подскажите пж. как в ST это одной строкой записать?
до этого дошел..... DIG_FLTR_01(IN_VAL:= , PB:=1000 , TI:=500 , OUT_VAL=> DAT_DD_001_R_0001);
38868

capzap
24.09.2018, 21:32
Ребята подскажите пж. как в ST это одной строкой записать?
до этого дошел..... DIG_FLTR_01(IN_VAL:= , PB:=1000 , TI:=500 , OUT_VAL=> DAT_DD_001_R_0001);
38868

одной не получится, второй строкой продублируйте в виде REAL_TO_WORD(DIG_FLTR_01.OUT_VAL)

DIPHENHYDRAMINE
24.09.2018, 21:36
одной не получится, второй строкой продублируйте в виде REAL_TO_WORD(DIG_FLTR_01.OUT_VAL)

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

DIPHENHYDRAMINE
24.09.2018, 21:45
PID_REGULATORS.LIB не работает в эмуляторе?

Зинько Владислав
25.09.2018, 09:17
PID_REGULATORS.LIB не работает в эмуляторе?

Добрый день!

Да, библиотеки ОВЕН не работают в эмуляции.
Для отладки необходим реальный или виртуальный контроллер.

Newcomer
25.09.2018, 10:19
Добрый день!

Да, библиотеки ОВЕН не работают в эмуляции.
Для отладки необходим реальный или виртуальный контроллер.

А что в данном случае может быть виртуальным контроллером ?

Зинько Владислав
25.09.2018, 14:43
А что в данном случае может быть виртуальным контроллером ?

Добрый день!

Виртуальный контроллер - это доп. утилита Codesys для полноценной отладки пользовательского проекта.
Для Codesys v2.3 он находится в той же папке, что и сама среда разработки, в поддиректории CODESYS SP PLCWinNT.

Для запуска контроллера необходимо запустить PLCWinNT24.exe.

Программа даст ограниченное время работы в демо-режиме, а так же IP и порт виртуального контроллера, которые необходимо будет указать в среде разработки в параметрах связи.
38876

Со стороны Codesys необходимо сменить целевую платформу ПЛК на 3S CoDeSys SP PLCWinNT V2.4.
И, как было сказано выше, в параметрах связи указать IP и порт вирт. контроллера.

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

petera
25.09.2018, 15:36
Добрый день!

Виртуальный контроллер - это доп. утилита Codesys для полноценной отладки пользовательского проекта.
Для Codesys v2.3 он находится в той же папке, что и сама среда разработки, в поддиректории CODESYS SP PLCWinNT.

Для запуска контроллера необходимо запустить PLCWinNT24.exe.

Программа даст ограниченное время работы в демо-режиме, а так же IP и порт виртуального контроллера, которые необходимо будет указать в среде разработки в параметрах связи.
38876

Со стороны Codesys необходимо сменить целевую платформу ПЛК на 3S CoDeSys SP PLCWinNT V2.4.
И, как было сказано выше, в параметрах связи указать IP и порт вирт. контроллера.

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

PID_REGULATORS.LIB не будет работать в PLCWinNT
по этому в ДАННОМ СЛУЧАЕ этот виртуальный ПЛК не подходит

Newcomer
25.09.2018, 16:40
PID_REGULATORS.LIB не будет работать в PLCWinNT
по этому в ДАННОМ СЛУЧАЕ этот виртуальный ПЛК не подходит

А для каких целей может подойти виртуальный ПЛК ?

petera
25.09.2018, 16:53
А для каких целей может подойти виртуальный ПЛК ?

Я, например, использую для проверки работы
с файлами(SysLibFile) http://www.owen.ru/forum/showthread.php?t=22665&p=186999&viewfull=1#post186999
или памятью (SysLibMem) http://www.owen.ru/forum/showthread.php?t=10555&p=287799&viewfull=1#post287799
или временем(SysLibTime)

kpit
25.09.2018, 17:07
У кого есть опыт импорта step5 в овен? Есть старая упаковачначя линия под step5 с 10 входными и 8 выходными дискретными модулями. В очередной раз сгорел контроллер (цена и срок поставки совсем не демократичные). Давно уже есть желание перейти на что-то другое. Исходники на step5 есть. Кому интересно поучаствовать естественно за вознаграждение пишите

petera
25.09.2018, 18:59
У кого есть опыт импорта step5 в овен? Есть старая упаковачначя линия под step5 с 10 входными и 8 выходными дискретными модулями. В очередной раз сгорел контроллер (цена и срок поставки совсем не демократичные). Давно уже есть желание перейти на что-то другое. Исходники на step5 есть. Кому интересно поучаствовать естественно за вознаграждение пишите
Конвертирование языка S5 в МЭК C 61131-3 (http://plc24.ru/konvertirovanie-yazyka-s5-v-mek-c-61131-3/)

DIPHENHYDRAMINE
26.09.2018, 18:25
Ребята подскажите пж. как в ST это будет??

38892

petera
26.09.2018, 18:33
Ребята подскажите пж. как в ST это будет??

38892



Так и будет, только задом на перёд :rolleyes:

CLI_GI_0000:= BYTE_TO_WORD(PACK(
HMI_DI_80,
HMI_DI_81,
HMI_DI_82,
HMI_DI_83,
HMI_DI_84,
HMI_DI_85,
HMI_DI_86,
HMI_DI_87));

DIPHENHYDRAMINE
26.09.2018, 19:09
Так и будет, только задом на перёд :rolleyes:
спасибо большое!

DIPHENHYDRAMINE
26.09.2018, 19:35
а так правильно будет?


CLI_GI_0000:= BYTE_TO_WORD(PACK(
HMI_DI_0080,
HMI_DI_0081,
HMI_DI_0082,
HMI_DI_0083,
HMI_DI_0084,
HMI_DI_0085,
FALSE,
FALSE));

DIPHENHYDRAMINE
27.09.2018, 12:34
Ребята ну подскажите еще раз пж. как в ST это реализовать??

38901

petera
27.09.2018, 12:36
Ребята ну подскажите еще раз пж. как в ST это реализовать??

38901

Я же Вам уже подсказывал, все точно так же, только задом на перёд


TON_01(IN:= Start, PT:=t#10s);
MU16R_1_D0_006:= SEL(TON_01.Q, 0, 1000);

Mr.Space
27.09.2018, 13:51
Добрый день. Искал по форумам, но похожих тем не нашёл. Если было - извините.
В связи с тем, что проекты всё чаще стали попадаться однотипные - решил перейти с LD на ST для оптимизации разработки. Потому как описывать руками по 50+ одинаковых действий для разных входов выходов очень геморно, и решил перейти на циклы.
Первым делом решил загнать все отдельные переменные в массивы, для удобства. И понял что ни где не описано как реализовывать перебор адресов для цикла. Ну т.е. для массива можно указать порядковый номер как переменную типа INT и потом её просто увеличивать. А как в адрес вставить такую переменную не понятно.

Вот как пример то, с чем я сейчас работаю - есть массив переменных типа BYTE для Modbus. Они прописаны в настройках ПЛК. И есть массив, куда я хочу их все собрать, что бы не обращаться к каждой переменной отдельно. Всего переменных 120, с %QB6.1.0 до %QB6.120.0, однако указать часть адреса как динамическую переменную не получается.
Представлял что должно получится что-то вроде этого:

HMI_Array: ARRAY [0..120] OF BYTE;
n := INT;
IF n<= 120 THEN
HMI_Array[n] := %QB6.[n].0;
n++;
ELSE
n := 0;
END_IF

Кто-то сталкивался с такими задачами? В какую сторону смотреть?
Заранее спасибо :)

capzap
27.09.2018, 13:57
Добрый день. Искал по форумам, но похожих тем не нашёл. Если было - извините.
В связи с тем, что проекты всё чаще стали попадаться однотипные - решил перейти с LD на ST для оптимизации разработки. Потому как описывать руками по 50+ одинаковых действий для разных входов выходов очень геморно, и решил перейти на циклы.
Первым делом решил загнать все отдельные переменные в массивы, для удобства. И понял что ни где не описано как реализовывать перебор адресов для цикла. Ну т.е. для массива можно указать порядковый номер как переменную типа INT и потом её просто увеличивать. А как в адрес вставить такую переменную не понятно.

Вот как пример то, с чем я сейчас работаю - есть массив переменных типа BYTE для Modbus. Они прописаны в настройках ПЛК. И есть массив, куда я хочу их все собрать, что бы не обращаться к каждой переменной отдельно. Всего переменных 120, с %QB6.1.0 до %QB6.120.0, однако указать часть адреса как динамическую переменную не получается.
Представлял что должно получится что-то вроде этого:

HMI_Array: ARRAY [0..120] OF BYTE;
n := INT;
IF n<= 120 THEN
HMI_Array[n] := %QB6.[n].0;
n++;
ELSE
n := 0;
END_IF

Кто-то сталкивался с такими задачами? В какую сторону смотреть?
Заранее спасибо :)

а просто один массив равно другому сложно поставить?

petera
27.09.2018, 14:11
Можно сделать и без копирования
При объявлении массива HMI_Array использовать ключевое слово АТ с указанием адрес первого элемента 8bits
38903
И работать с элементами массива HMI_Array
38904

Mr.Space
27.09.2018, 14:20
Не знал что так можно объявлять. Спасибо))

Mr.Space
27.09.2018, 14:22
а просто один массив равно другому сложно поставить?

Так тут как раз вопрос как быть, если одна часть это не массив, а просто кучка переменных в каком-то адресном диапазоне.
Но мне уже ответили, что можно объявить массив указав начало адреса и количество элементов))

petera
27.09.2018, 14:30
Не знал что так можно объявлять. Спасибо))
http://www.owen.ru/forum/attachment.php?attachmentid=11963&d=1392751579
38905

BomeX
27.09.2018, 19:24
Всем доброго времени суток. Вот и я дожил до управления фонтана ОВЕНом )) Задача проста, но опыта в программировании не имею, увы... Есть ПЛК154, есть 3 насоса и 3 ПЧ.(управление по RS-485 планировалось) Есть интервал времени, скажем 60сек, за который должны пройти 3-4 различные программы с различной частотой на двигателях. Может простецкие базовые программы существуют, которые можно уже руками немного поправить "под себя". Или может опыт у кого подобный был. Управление только ПЧ нужно, подсветка сама по себе. Заранее спасибо за ответы и советы

rovki
27.09.2018, 20:55
Если задача простенькая ,то и оборудование нужно простое,тем более опыта в программировании не имеете - ПР200 более чем за глаза для управления по RS485 3 ПЧ и проект помогут

BomeX
27.09.2018, 21:11
Если задача простенькая ,то и оборудование нужно простое,тем более опыта в программировании не имеете - ПР200 более чем за глаза для управления по RS485 3 ПЧ и проект помогут

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

rovki
27.09.2018, 22:19
Так хотелось бы его начать приобретать, этот самый опыт... с чего-то нужно ведь начинать. ПЛК уже в наличии. Проект отсутствует и не было его, к сожалению. Заказчик сказал "хочу", теперь вынужден изобретать. Поэтому и прошу помощи

Начинайте с чтения документации по КДС ...

Parhelia
27.09.2018, 22:39
подскажите как преобразовать word в отдельные биты? на СFC
в библиотеке есть word to byte. Но в word 2 байта, а на выходе 1 переменная.
А дальше как вычленить отдельные биты и с ними работать?
блок unpack работает только с байтом.
как обратится к отдельному биту, когда надо считать отдельный бит со входного модуля
чтото я запутался. подскажите куда посмотреть.

DIPHENHYDRAMINE
27.09.2018, 23:53
подскажите как преобразовать word в отдельные биты? на СFC
в библиотеке есть word to byte. Но в word 2 байта, а на выходе 1 переменная.
А дальше как вычленить отдельные биты и с ними работать?
блок unpack работает только с байтом.
как обратится к отдельному биту, когда надо считать отдельный бит со входного модуля
чтото я запутался. подскажите куда посмотреть.

у меня так....


VAR_INPUT
INPUT: WORD;
END_VAR
VAR_OUTPUT
INPUT01: BOOL;
INPUT02: BOOL;
INPUT03: BOOL;
INPUT04: BOOL;
INPUT05: BOOL;
INPUT06: BOOL;
INPUT07: BOOL;
INPUT08: BOOL;
INPUT09: BOOL;
INPUT10: BOOL;
INPUT11: BOOL;
INPUT12: BOOL;
INPUT13: BOOL;
INPUT14: BOOL;
INPUT15: BOOL;
INPUT16: BOOL;
END_VAR
INPUT01:=INPUT.0;
INPUT02:=INPUT.1;
INPUT03:=INPUT.2;
INPUT04:=INPUT.3;
INPUT05:=INPUT.4;
INPUT06:=INPUT.5;
INPUT07:=INPUT.6;
INPUT08:=INPUT.7;
INPUT09:=INPUT.8;
INPUT10:=INPUT.9;
INPUT11:=INPUT.10;
INPUT12:=INPUT.11;
INPUT13:=INPUT.12;
INPUT14:=INPUT.13;
INPUT15:=INPUT.14;
INPUT16:=INPUT.15;

Parhelia
28.09.2018, 01:06
у меня так....
спасибо но стало ещё больше непонятно
есть входной register input module у которого данные в формате word
адрес этой переменной %IW7.1.0.0
так вот как с нее получить отдельные 16 бит на языке cfc? вроде както можно напрямую указать адрес конкретного бита, но как это сделать для переменной word я не понимаю.
38913


по вашему коду мне непонятно
VAR_INPUT
INPUT: WORD;
END_VAR
это объявление переменной INPUT. это понятно. Но она же вроде должна быть глобальной, если она "входная", то зачем её снова объявлять?

а вот дальше
VAR_OUTPUT
INPUT01: BOOL;
INPUT02: BOOL;
......
INPUT16: BOOL;
END_VAR
это объявление переменных с именами INPUT01 и т.д.? почему они в OUTPUT?

а вот дальше что? идёт присвоение объявленной переменной INPUT01:значения первого бита переменной INPUT.0 ?

если я правильно понимаю то получается вот так?
38912

странно что нет стандартного блока. или я плохо искал?

petera
28.09.2018, 02:18
спасибо но стало ещё больше непонятно
есть входной register input module у которого данные в формате word
адрес этой переменной %IW7.1.0.0
так вот как с нее получить отдельные 16 бит на языке cfc? вроде както можно напрямую указать адрес конкретного бита, но как это сделать для переменной word я не понимаю.
38913


по вашему коду мне непонятно
VAR_INPUT
INPUT: WORD;
END_VAR
это объявление переменной INPUT. это понятно. Но она же вроде должна быть глобальной, если она "входная", то зачем её снова объявлять?

а вот дальше
VAR_OUTPUT
INPUT01: BOOL;
INPUT02: BOOL;
......
INPUT16: BOOL;
END_VAR
это объявление переменных с именами INPUT01 и т.д.? почему они в OUTPUT?

а вот дальше что? идёт присвоение объявленной переменной INPUT01:значения первого бита переменной INPUT.0 ?

если я правильно понимаю то получается вот так?
38912

странно что нет стандартного блока. или я плохо искал?
жесть
..................

Parhelia
28.09.2018, 03:26
рад что смог удивить профессионалов, но хотелось бы узнать что делаю не так

38914

word1.1 - это второй бит с первой глобальной переменной word
word2.1 - это второй бит со второй переменной word.
так правильно?

или надо делать только через пользовательский блок?

3891538916

BomeX
28.09.2018, 06:42
Документацию вовсю читаю, разбираюмь, смотрю видеоуроки. Написал и Залил даже "тестовую" программу для связи плк с пчв. )
Просто с подачи знающих людей можно быстрее разобраться с дальнейшими действиями, ну и проще, я думаю

DIPHENHYDRAMINE
28.09.2018, 07:58
рад что смог удивить профессионалов, но хотелось бы узнать что делаю не так

38914

word1.1 - это второй бит с первой глобальной переменной word
word2.1 - это второй бит со второй переменной word.
так правильно?

или надо делать только через пользовательский блок?

3891538916

вот так попробуй.....

Parhelia
28.09.2018, 08:22
вот так попробуй.....
спасибо, к этому и пришёл в итоге, в запаре просто затупил чтото сначала

так и не понял - можно сразу обратиться к отдельному биту глобальной переменной
в виде INPUT.0 где INPUT - имя переменной WORD
или нет?

Parhelia
28.09.2018, 08:41
Документацию начните читатьспасибо за совет
коллеги
иногда складывается ощущение что вы уже пересидели на форуме и забыли с какими вопросами сталкиваются новички

Parhelia
28.09.2018, 08:49
скачайте базовую бибку здесь http://www.oscat.de/index.php?option=com_jdownloads и начните разбираться с кодом, подсказки начинающим нужны в сложных вещах, а не в элементарной битовой логике
Разберетесь как устроены BIT_OF_DWORD и BIT_LOAD_W и забудете про PACK/UNPACK
а что за олдскульная дедовщина такая? вопрос задан в теме для новичков, вместо этого прям возмущение какие тупые новички пошли
странно что для регистрации на форуме ещё не сделали тест на типа егэ. у вас я бы точно его не прошёл
вы за всех решаете, какие подсказки и в чём им нужны?

Parhelia
28.09.2018, 09:07
дедовщина это когда я заставил бы делать Вас свою работу, а пока выходит что это Вы пытаетесь за счет других делать свои дела. Да, действительно , неплохо бы проходит определенные тесты тем кто хочет зарегистрироваться, а то школьный курс информатики здесь раздувают до такой степени, что им обязаны здесь помочь. Не хотите изучать правильный код, Ваше дело я чтото не понимаю, какое я отношение имею к вашим проблемам в жизни? в каком месте я вам дорогу перешёл?

DIPHENHYDRAMINE
28.09.2018, 12:36
и снова здравствуйте......
такой вопросик.....
есть ФБ HYSTERESIS


HYSTERESIS (IN:= DAT_TT_001_R_0002, HIGH:= SET_TEMPERATURE + 10, LOW:= SET_TEMPERATURE - 5, OUT=> );

как ограничить SET_TEMPERATURE + 10 чтобы не превышало допустим 100...??

petera
28.09.2018, 12:37
и снова здравствуйте......
такой вопросик.....
есть ФБ HYSTERESIS


HYSTERESIS (IN:= DAT_TT_001_R_0002, HIGH:= SET_TEMPERATURE + 10, LOW:= SET_TEMPERATURE - 5, OUT=> );

как ограничить SET_TEMPERATURE + 10 чтобы не превышало допустим 100...??

Лимит поставить.
38937


PROGRAM PLC_PRG
VAR
DAT_TT_001_R_0002: INT;
SET_TEMPERATURE: INT;
HYSTERESIS_01: HYSTERESIS;
END_VAR

HYSTERESIS_01 (IN:= DAT_TT_001_R_0002, HIGH:= LIMIT(100, SET_TEMPERATURE + 10, 0), LOW:= LIMIT(100, SET_TEMPERATURE - 5, 0), OUT=> );

DIPHENHYDRAMINE
28.09.2018, 12:40
Лимит поставить.

вот в этом сложность... про лимит знаю... но как это в ST будет... изучаю... подскажите пожалуйста...

DIPHENHYDRAMINE
28.09.2018, 12:43
MIN(SET_TEMPERATURE + 10,100)

мне максимум ограничить...
MAX(SET_TEMPERATURE + 10,100) ?

DIPHENHYDRAMINE
28.09.2018, 12:49
capzap petera спасибо!! разбираюсь...

petera
28.09.2018, 12:49
вот в этом сложность... про лимит знаю... но как это в ST будет... изучаю... подскажите пожалуйста...

38937


PROGRAM PLC_PRG
VAR
DAT_TT_001_R_0002: INT;
SET_TEMPERATURE: INT;
HYSTERESIS_01: HYSTERESIS;
END_VAR

HYSTERESIS_01 (IN:= DAT_TT_001_R_0002, HIGH:= LIMIT(100, SET_TEMPERATURE + 10, 0), LOW:= LIMIT(100, SET_TEMPERATURE - 5, 0), OUT=> );

DIPHENHYDRAMINE
28.09.2018, 13:28
LIMIT(0, SET_TEMPERATURE + 10, 100) ?

да..да…. разобрался....
LIMIT(0, SET_TEMPERATURE + 10,100) работает...

а вот MAX (SET_TEMPERATURE + 6, 100) чет не пошло….

DIPHENHYDRAMINE
28.09.2018, 18:16
ребята что я делаю не так....?
КДС ругается


IF HMI_AI_0018 < 2400 THEN PLC_DO_0012 := TRUE; ELSIF HMI_AI_0018 > 2600 THEN PLC_DO_0012 := FALSE; END_IF

38943

DIPHENHYDRAMINE
28.09.2018, 18:26
Ворчит. Положи болт

мне не нравиться так.....
решение существует вообще?

DIPHENHYDRAMINE
28.09.2018, 21:49
мне не нравиться так.....
решение существует вообще?

разобрался.... вопрос снят....

Tolya25
05.10.2018, 13:07
Пытаюсь создать проект светофора описанный в руководстве по codesys 2.3
подскажите пожалуйста как будет выглядеть раздел объявлений переменных в законченном
виде после выбора типа переменной off, какой выбрать тип переменной( может BOOL?) и класс переменной var input, var output, var?
такой раздел объявлений
FUNCTION_BLOCK TRAFFICSIGNAL
VAR_INPUT
STATUS: INT;
END_VAR
VAR_OUTPUT
GREEN: BOOL;
YELLOW: BOOL;
RED: BOOL;
END_VAR
VAR
OFF: BOOL;
END_VAR

Заранее благодарен)
Анатолий.39021

Rednaxel
06.10.2018, 09:34
Пытаюсь создать проект светофора описанный в руководстве по codesys 2.3
подскажите пожалуйста как будет выглядеть раздел объявлений переменных в законченном
виде после выбора типа переменной off, какой выбрать тип переменной( может BOOL?) и класс переменной var input, var output, var?
...
Анатолий, я так понял что эта переменная никуда не подключена и просто показывает что светофор отключен.
Поэтому разницы нет какая она и в каком разделе.
Пусть будет BOOL в общем разделе (VAR)

VN53
12.10.2018, 11:36
Добрый день! Вопрос: как запрограммировать выход в исходное состояние при подаче питания на ПЛК110 ? Заранее спасибо за ответ!

Rednaxel
12.10.2018, 12:08
Добрый день! Вопрос: как запрограммировать выход в исходное состояние при подаче питания на ПЛК110 ? Заранее спасибо за ответ!

Если питание ПЛК будет сброшено, то и переменная выхода будет сброшена в FALSE, разве нет?
А что вы называете исходным состоянием?

Rednaxel
12.10.2018, 12:16
Если питание ПЛК будет сброшено, то и переменная выхода будет сброшена в FALSE, разве нет?
А что вы называете исходным состоянием?

Если Вы желаете чтобы выход при включении был установлен в TRUE, вот Вам вариант:
1) Вместо того чтобы задавать переменную в конфигурации ПЛК, задайте ее в области переменных Вашего POU:
2) Присвойте явно этой переменной желаемое значение

Например (для FDO 0 ПЛК 110):
PROGRAM PLC_PRG
VAR
MyVar AT%QX2.0: BOOL :=TRUE;
END_VAR

VN53
12.10.2018, 16:06
Спасибо! Как то упустил этот момент. Все стало на свои места.

Anton441
15.10.2018, 11:49
Работа со строковыми переменными STRONG.
Доброго времени суток!
Где-то читал, что при обработке строковых переменных в программе ПЛК, например при копировании одной строковой переменной из одной переменной A в другую переменную B требуется время больше чем один цикл программы. Так ли это?
На практике требуется скопировать строковую переменную типа STRING длиной 150 символов из одной ячейки в другую. Можно ли это сделать за один цикл выполнения программы? Например за 1 мс? Контроллер ПЛК110.

A.Simonov
15.10.2018, 15:57
Работа со строковыми переменными STRONG.
Доброго времени суток!
Где-то читал, что при обработке строковых переменных в программе ПЛК, например при копировании одной строковой переменной из одной переменной A в другую переменную B требуется время больше чем один цикл программы. Так ли это?
На практике требуется скопировать строковую переменную типа STRING длиной 150 символов из одной ячейки в другую. Можно ли это сделать за один цикл выполнения программы? Например за 1 мс? Контроллер ПЛК110.

Не знаю где Вы такое прочли. Скопировать можно и за один цикл.
Жду от Вас ссылку на источник.

Mr Green
22.10.2018, 09:31
Доброго всем дня. Если не сложно, прошу подсказать, каким образом можно реализовать мигание сегмента СМИ2 в портретном режиме, учитывая необходимость отсутствия мигания на других (орпределеннные просто горят)?

A.Simonov
22.10.2018, 15:34
Доброго всем дня. Если не сложно, прошу подсказать, каким образом можно реализовать мигание сегмента СМИ2 в портретном режиме, учитывая необходимость отсутствия мигания на других (орпределеннные просто горят)?

На сайте есть пример работы с портретным режимом. (например, СМИ2 + ПЛК Codesys 2.3)
https://www.owen.ru/product/svetodiodnij_indikator_smi2/example

DIPHENHYDRAMINE
25.10.2018, 20:21
Ребята подскажите пж. как на ST реализовать.....
еасть переменные А и В их нужно сравнить по таймеру ton.Q


ton (IN:= NOT ton.Q, PT:= T#15s);
IF A > B THEN OUT := TRUE; ELSE OUT := FALSE; END_IF

Мимоход
25.10.2018, 21:53
Ребята подскажите пж. как на ST реализовать.....
еасть переменные А и В их нужно сравнить по таймеру ton.Q


ton (IN:= NOT ton.Q, PT:= T#15s);
IF A > B THEN OUT := TRUE; ELSE OUT := FALSE; END_IF

Если имеется ввиду, что сравнивать нужно в момент ton.Q = TRUE, а в остальное время OUT должно оставаться равным предыдущему результату сравнения

ton1 (IN:= NOT ton1.Q, PT:= T#15s);
IF ton1.Q AND (A > B) THEN OUT:= TRUE; ELSIF ton1.Q THEN OUT:= FALSE; END_IF

ИЛИ


ton1 (IN:= NOT ton1.Q, PT:= T#15s);
IF ton1.Q THEN OUT:= A > B; END_IF

DIPHENHYDRAMINE
25.10.2018, 22:16
спасибо! именно это я имел ввиду....

DIPHENHYDRAMINE
27.10.2018, 20:49
Ребята ну помогите еще пж....
есть таймер ton1

ton1 () IN := NOT ton1.Q, PT := T#1m)

есть входная переменная IN и есть переменные A и B
нужно раз в минуту сравнивать переменные А и В
но нужно переменные А и В сдвигать раз в мин..... т. е. IN --1m--> A --1m--> B


IF ton1.Q THEN A := IN; END_IF

дальше стал в тупик....
пробовал двумя таймерами но они работают не синхронно...

Мимоход
27.10.2018, 21:49
Ребята ну помогите еще пж....
есть таймер ton1

ton1 () IN := NOT ton1.Q, PT := T#1m)

есть входная переменная IN и есть переменные A и B
нужно раз в минуту сравнивать переменные А и В
но нужно переменные А и В сдвигать раз в мин..... т. е. IN --1m--> A --1m--> B


IF ton1.Q THEN A := IN; END_IF

дальше стал в тупик....
пробовал двумя таймерами но они работают не синхронно...


VAR
ton1: TON;
C: BOOL;
A: WORD;
IN: WORD;
B: WORD;
END_VAR
ton1 (IN:= NOT ton1.Q, PT:= T#1m);
IF ton1.Q AND NOT C THEN
A:= IN;
C:= NOT C;
ELSIF ton1.Q AND C THEN
B:= IN;
C:= NOT C;
END_IF

DIPHENHYDRAMINE
27.10.2018, 22:33
VAR
ton1: TON;
C: BOOL;
A: WORD;
IN: WORD;
B: WORD;
END_VAR
ton1 (IN:= NOT ton1.Q, PT:= T#1m);
IF ton1.Q AND NOT C THEN
A:= IN;
C:= NOT C;
ELSIF ton1.Q AND C THEN
B:= IN;
C:= NOT C;
END_IF

Спасибо! но не совсем так как я хотел..... я наверно не очень точно выразился....
хотел чтобы сначала из А в В а из IN в А одновременно...
IN
|
A
|
B

Мимоход
27.10.2018, 22:56
Спасибо! но не совсем так как я хотел..... я наверно не очень точно выразился....
хотел чтобы сначала из А в В а из IN в А одновременно...
IN
|
A
|
B

ton1 (IN:= NOT ton1.Q, PT:= T#1m);
IF ton1.Q THEN
B:= A;
A:= IN;
END_IF

????

ton1 (IN:= NOT ton1.Q, PT:= T#1m);
IF ton1.Q AND NOT C THEN
B:= A;
C:= NOT C;
ELSIF ton1.Q AND C THEN
A:= IN;
C:= NOT C;
END_IF

DIPHENHYDRAMINE
27.10.2018, 23:13
[QUOTE=Мимоход;291057]
ton1 (IN:= NOT ton1.Q, PT:= T#1m);
IF ton1.Q THEN
B:= A;
A:= IN;
END_IF

Вот! работает так как я хотел!!
блин все так просто.....
Спасибо большое!

Tolya25
29.10.2018, 13:24
Спасибо. Помогло. Все работает.
Вот только в визуализации не работает кнопка включения светофора. Подскажите что не так в конфигурации элемента визуализации (в конфигурации кнопки).

Мимоход
29.10.2018, 13:46
Спасибо. Помогло. Все работает.
Вот только в визуализации не работает кнопка включения светофора. Подскажите что не так в конфигурации элемента визуализации (в конфигурации кнопки).

Дело было не в визуализации.
39512

Переменная START - фиктивня
Вход у SEQUENCE есть, а переменная START только в объявлениях, больше нигде не используется, соответственно ни на что и не влияет.

Tolya25
29.10.2018, 14:51
Спасибо большое.
правда не совсем понятно как выйти из положения...(я совсем начинающий),
если ни затруднит скиньте пожалуйста поправленный проект

nklim
05.11.2018, 12:28
Всем добрый день! Если не сложно, ответьте ,пожалуйста, на следующий вопрос.
Сделали проект на Masterscada, ОПС сервер OWEN. Сейчас для отправки СМС взяли овеновский GSM модем ПМ-01. Вопрос:
в документации один из вариантов подключения ПМ-01 - "RS-485, через преобразователь, например ОВЕН АС3-М (RS-232 в RS-485) или ОВЕН АС4
(RS-485 в USB) ". Т.е. , как я понимаю , его надо добавить как устройство в ОПС сервер? А как его настроить? Может есть какой драйвер или конфигуратор для модема?

RV9WFJ
06.11.2018, 06:49
Нет, вы не правильно понимаете. Настраивается он с помощью AT команд и подключается к компьютеру с помощью драйвера как стандартный модем. Можете использоыать стандартный драйвер Windows.

nklim
06.11.2018, 08:38
Спасибо за отклик! Вопрос снят. Я всё настроил, проблем по этому вопросу нет!

Tima
09.11.2018, 08:40
Добрый день! Подскажите, пожалуйста, как подключиться к контроллеру ОВЕН ПЛК 100-24.Р-М.
Установка в работе, IP адрес неизвестен.
Скачал фаил Target (PLC100.R-M)
Пробовал через TCP/IP маску подсети выбирал 255.255.0.0 и подсеть 10.0.6(с сетевой картой ПК все нормально), просканировал сеть не обнаружил.
Пробовал с помощью RS232 через преобразователь ICP-CON I-7561 тоже не получилось.

Andrew_Stranger
09.11.2018, 21:24
Добрый день! Подскажите, пожалуйста, как подключиться к контроллеру ОВЕН ПЛК 100-24.Р-М.
Установка в работе, IP адрес неизвестен.
Скачал фаил Target (PLC100.R-M)
Пробовал через TCP/IP маску подсети выбирал 255.255.0.0 и подсеть 10.0.6(с сетевой картой ПК все нормально), просканировал сеть не обнаружил.
Пробовал с помощью RS232 через преобразователь ICP-CON I-7561 тоже не получилось.
Usb? Смысл подключаться если исходников у вас нет? Подсеть почему не 192.168...?

alex55
10.11.2018, 10:29
Если есть исходный файл, подключиться легко, а нет ищите того кто писал программу, просто так подсмотреть в плк не получится, если только с новой прогой..

_Mikhail
10.11.2018, 15:17
Если есть исходный файл, подключиться легко, а нет ищите того кто писал программу, просто так подсмотреть в плк не получится, если только с новой прогой..

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

melky
11.11.2018, 08:56
Как минимум можно скачать компилированную программу.

_Mikhail
11.11.2018, 14:31
Таки абсолютно или если ?


см. пост 6603
К посту 6603 это не имеет никакого отношения. Это ответ как и было указано на пост 6605

Tima
11.11.2018, 15:20
Всем добрый день! В итоге для подключения к ПЛК необходимо иметь проект?

alex55
11.11.2018, 20:48
Хотя бы ; в проекте поставить, а дальше вперед по указанному выше плану.. если конечно программист был джентльмен и адрес контроллера не поменял и создал сохранил загрузочный файл, то читать файл из плк и все получится..

Mr Green
13.11.2018, 08:30
Добрый день. Хотелось бы получить совет, каким образом лучше реализовать уведомления о наличии не квитированного нового сигнала с датчика. Например имеется 20 датчиков. Поступил сигнал от первого-зажгли мигание табло и включили сирену. оператор нажатием на кнопку подтвердил-сирена выключилась, табло просто горит. синал от другого датчика- цикл повторяется (правда мигает другое табло). Вввиду неопытности пока сам не осилил.

alex55
13.11.2018, 10:03
Вот как то тренировался, правда без панели и мигания, но это уже детали, сама идея съема аварии и контроля датчиков работает работает.. может чем поможет

Mr.Space
13.11.2018, 12:23
Добрый день. Столкнулся с проблемой - ПЛК 110.30-М v2 не сохраняет проект. Загрузочный проект делаю, всё нормально работает, но при перезагрузке стирает всё и просит заново загрузить программу. Может в проекте чего начудил? Грешу на севший аккум, но контроллер новый и сомневаюсь.
Переменный и модулей много, но в максимальный размер конфига в 100кб уместился. Модули тоже нормально опрашивает.
Может прикол в энергонезависимых переменных?
39769

-=Vovka=-
13.11.2018, 12:28
Добрый день!
Подскажите, как правильно написать:


VAR
a : BYTE;
p : POINTER TO BYTEд
END_VAR

FUNCTION F1 : BOOL
VAR_INPUT
x : POINTER TO BYTE;
END_VAR
x^ := 0;
END_FUNCTION

a := 5;
p := ADR (a );
F1( ADR(p) );


Т.е. мне нужно передать в функцию указатель на p или адрес переменной p
Как это в Паскале пишется что-то не найду...

capzap
13.11.2018, 12:34
Добрый день!
Подскажите, как правильно написать:


VAR
a : BYTE;
p : POINTER TO BYTEд
END_VAR

FUNCTION F1 : BOOL
VAR_INPUT
x : POINTER TO BYTE;
END_VAR
x^ := 0;
END_FUNCTION

a := 5;
p := ADR (a );
F1( ADR(p) );


Т.е. мне нужно передать в функцию указатель на p или адрес переменной p
Как это в Паскале пишется что-то не найду...

указатель на указатель зачем? Достаточно F1( p );

Mr.Space
13.11.2018, 12:58
Добрый день. Столкнулся с проблемой - ПЛК 110.30-М v2 не сохраняет проект. Загрузочный проект делаю, всё нормально работает, но при перезагрузке стирает всё и просит заново загрузить программу. Может в проекте чего начудил? Грешу на севший аккум, но контроллер новый и сомневаюсь.
Переменный и модулей много, но в максимальный размер конфига в 100кб уместился. Модули тоже нормально опрашивает.
Может прикол в энергонезависимых переменных?
Прошерстил форумы - из дельных советов только установить back-up working time в значение больше 5-и секунд, но для 110 нет такой строки в параметрах плк.
Ещё думал в сторону того, что глючит контакт кнопки старт/стоп, но так же сомневаюсь т.к. он бы просто не стартовал, но ни как не стирал программу в ноль из памяти. Плюс CoDeSys не даёт добавить такой объект как кнопка для 110.
Может кто сталкивался с похожей проблемой - подскажите в какую сторону хоть примерно копать, потому как я в растерянности...

-=Vovka=-
13.11.2018, 13:07
указатель на указатель зачем? Достаточно F1( p );
Так и знал, что ответ будет таким! :)
Я привел пример, чтобы было понятно, что мне нужно.
Мне нужно в функцию передавать указатель на указатель, чтобы в функции обнулять переменную "a"

Спрошу по проще: мне нужно этот код на си перевести в паскалевский ST:


void F1( BYTE *p )
{
*p = 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
BYTE a;
BYTE *p;
p = &a;
a = 5;
F1( p );

return 0;
}

capzap
13.11.2018, 13:13
F1( p ) равноценно F1( ADR ( a ) ) следовательно a как раз таки и обнулиться, только Вы этого не замечаете, потому что каждый цикл присваиваете её 5 перед обнулением

-=Vovka=-
13.11.2018, 13:30
Спасибо, понял. Исправил - работает. Это ж был пример - о цикле знаю. Смотрел сразу после функции - не обнуляло...

melkiy060489
15.11.2018, 20:03
Добрый вечер подскажите пожалуйста3983839839 3 проекта идентичные друг другу, в большей степени работаю с первым. Всё было хорошо, но появилась такая ошибка(см. фото). На работу проекта не влияет, только на визуализацию. Как решить данную проблему? На остальных 2 проектах всё хорошо.

Dmitro
18.11.2018, 14:40
Может вопрос задавался множество раз, я не нашел сходу.

У меня Windows 7x64. Не работает виртуальный контроллер "3S realtime PLC", в настройках помигивает "The Kernel is not loaded".
Подпункт "Start System" есть, но нажатие на него ни к чему не приводит. Также нельзя из CDS2.3 к нему достучаться.
Как запустить прогу на эмуляторе?

cimona
20.11.2018, 14:28
Добрый день.
Вопрос: Как грамотно подружить ПЛК73 и переменный резистор (резестивный дачик положения) 0-10кОм?

cimona
20.11.2018, 14:40
немного резистивного деления и немного математики

А можно чуточку по подробнее?
Или хотя-бы ссылку на ресурс где расписано?

cimona
20.11.2018, 15:51
Проверьте меня если не сложно:
Тип датчика берем 2-20мА
погрузочное сопротивление 1.2 кОм
питание с борта 24V
Собираем: минус питания на клемму AI-R
плюс питания на сопротивление 1.2 кОм и далее на переменный резистор 0-10кОм, середину с хвостом переменного резистора на клемму AI x-2
Получаем при нулевом сопротивлении на переменном 24/1200 получаем 20mA, а при максимальном в 10кОм 24/11200 получаем 2,14mA.
В таком виде будет работать?
и соответственно на выходе будет диапазон от 2 до 20 в формате REAL

programmist13
23.11.2018, 13:58
Здравствуйте.
У меня вопрос по теме "отображения устройства в области памяти", именно так называется заголовок руководства пользователя по конфигурированию ПЛК, в котором сказано, что в конфигурации ПЛК к модулю ModBus(slave) можно подключить подмодуль ModBus (Master) для прямого считывания регистров последнего.
Выглядит это вот так
40027
Теперь вопросы:
1) Как правильно сконфигурировать подмодуль ModBus (Master) чтобы читать данные напрямую с модуля modbus (master) через модуль modbus (slave) используя его как "шлюз"
2) Нужно ли в таком случае клонировать переменные из основного модуля modbus (master) в подмодуль или можно обращаться к переменным по именам?
Для примера у меня к мастеру подключены два модуля аналоговых вводов, как мне считать показания входов через modbus (slave), чтобы отобразить их на панели оператора?
40028

petera
23.11.2018, 14:56
Здравствуйте.
У меня вопрос по теме "отображения устройства в области памяти", именно так называется заголовок руководства пользователя по конфигурированию ПЛК, в котором сказано, что в конфигурации ПЛК к модулю ModBus(slave) можно подключить подмодуль ModBus (Master) для прямого считывания регистров последнего.
Выглядит это вот так
40027
Теперь вопросы:
1) Как правильно сконфигурировать подмодуль ModBus (Master) чтобы читать данные напрямую с модуля modbus (master) через модуль modbus (slave) используя его как "шлюз"
2) Нужно ли в таком случае клонировать переменные из основного модуля modbus (master) в подмодуль или можно обращаться к переменным по именам?
Для примера у меня к мастеру подключены два модуля аналоговых вводов, как мне считать показания входов через modbus (slave), чтобы отобразить их на панели оператора?
40028
Мастер в слейв вставить можно, но практически не имеет смысла. http://www.owen.ru/forum/showthread.php?t=14199&p=147040&viewfull=1#post147040

если мастер встроить в слейв, то слейв реально видит(и читает и пишет) во вложенном мастере только модули Register output, а Register input всегда отображаются в слейве с нулевым содержимым

А вот слейв в слеве - это сила! http://www.owen.ru/forum/showthread.php?t=14199&p=146969&viewfull=1#post146969

Дмитрий
27.11.2018, 11:41
Как правильно задать переменные для считывания сторонним ОРС сервером по modbas TCP

БлинВсеименаЗаняты
27.11.2018, 13:33
"Энергонезависимая память"- на самом деле зависит от состояния аккумулятора?
1. То есть если аккум. дохлый в 0 то Retain переменные потеряются?
2. Загрузка и сохранение проекта в ПЛК не зависит от состояния аккумулятора?
3. В СП270 можно работать с PFW регистрами, можно ли как то так работать и в ПЛК110?

petera
27.11.2018, 13:51
"Энергонезависимая память"- на самом деле зависит от состояния аккумулятора?
1. То есть если аккум. дохлый в 0 то Retain переменные потеряются?
2. Загрузка и сохранение проекта в ПЛК не зависит от состояния аккумулятора?
3. В СП270 можно работать с PFW регистрами, можно ли как то так работать и в ПЛК110?
SysLibFile и аккумулятор нестрашен

БлинВсеименаЗаняты
27.11.2018, 14:23
SysLibFile и аккумулятор нестрашен

А по поводу п.№2 и 3?

petera
27.11.2018, 14:41
А по поводу п.№2 и 3?

п.2 - не зависит.
п.3 - SysLibFile, и запись переменных тоже будет во флеш память

Эдуард_Н
01.12.2018, 05:16
Подскажите из каких блоков можно сделать ФБ в КДС такой же как макрос в ОЛ "Graf_4pnt_", или тупо скопировать?

ASo
01.12.2018, 08:58
Начните с charcurve.

Эдуард_Н
01.12.2018, 09:12
Начните с charcurve.

Он INT, а нужен REAL.
И что то ошибку с ним не пойму40139

ASo
01.12.2018, 09:31
Ну, можно поднять до int с необходимой точностью.
Или возьмите LINEAR_INT из OSCAT BASIC

cimona
01.12.2018, 20:14
Как на плк73 максимально ускорить считывание аналогового сигнала 0,04-2кОм подкюченно 4шт, один используется для ПИД регулятора, скорости не хватает.

cimona
01.12.2018, 21:27
а кокого время считывания можно добиться? у меня примерно 0,5сек?

RV9WFJ
02.12.2018, 09:29
Это и есть практически предел. В сферическом вакууме согласно паспорта 0.3 сек.

Кирилл84
02.12.2018, 22:05
Ребят, как бегущие огни сделать на 6 ламп с поочерёдным включением по 5 секунд
в группе находил про бегущие огни, скачивал, но программа для овена не открывала файл

konstatafit
03.12.2018, 11:11
ребзя здравствуйте . подскажите как реализована поворотка крана на плк у кого какие мысли

Кирилл84
03.12.2018, 18:52
а на логических элементах можно? пример, а то я новичёк на реле пр200-220.1.х

Сергей0308
03.12.2018, 19:17
а на логических элементах можно? пример, а то я новичёк на реле пр200-220.1.х

40189

И тему ищите более подходящую!

Dmitro
03.12.2018, 21:36
Не могу получить температуру с МВА8.
Конфигуратор получает, показывает.

То же самое с контроллера ПЛК100 - ошибка 81.

https://drive.google.com/file/d/1fsVIwr5aI3pfghS6wKsVHs8p9TV_Iw68/view?usp=sharing

Andrew_Stranger
03.12.2018, 22:40
Не могу получить температуру с МВА8.
Конфигуратор получает, показывает.

То же самое с контроллера ПЛК100 - ошибка 81.

https://drive.google.com/file/d/1fsVIwr5aI3pfghS6wKsVHs8p9TV_Iw68/view?usp=sharing
Шаблоны лучше не использовать.

murzik
04.12.2018, 21:15
Всем всего хорошего! Можно ли использовать порт ethernet для связи между собой двух одинаковых ПЛК110М02? Никаких подводных камней не должно всплыть при этом?

RV9WFJ
05.12.2018, 05:25
Всем всего хорошего! Можно ли использовать порт ethernet для связи между собой двух одинаковых ПЛК110М02? Никаких подводных камней не должно всплыть при этом?
Нужно использовать. Камни могут возникнуть только в реализации.

Seyran
05.12.2018, 13:12
как изменить IP адрес ПЛК 110-М2 ?

fedotov_andrey
05.12.2018, 16:15
Связка ПЛК110 + ТРМ202.
Подскажите наверняка простой вопрос. Как получить в codesys значение измеряемой температуры на первом канале ТРМ202.
http://joxi.ru/gmvRNqlfL95VVm
Что не так?

fedotov_andrey
05.12.2018, 16:15
как изменить IP адрес ПЛК 110-М2 ?

Через ПЛК браузер

Гарчев Евгений
05.12.2018, 16:55
Связка ПЛК110 + ТРМ202.
Подскажите наверняка простой вопрос. Как получить в codesys значение измеряемой температуры на первом канале ТРМ202.
http://joxi.ru/gmvRNqlfL95VVm
Что не так?
в регистре с адресом 1 лежит значение в целочисленном формате. Таким образом, либо замените real_input_module на register_input_module, либо укажите соответствующий адрес регистра (4105dec) для real_input_module

fedotov_andrey
05.12.2018, 22:28
либо укажите соответствующий адрес регистра (4105dec) для real_input_module
А что это за регистр, нигде не нахожу описания?

fedotov_andrey
06.12.2018, 10:20
в регистре с адресом 1 лежит значение в целочисленном формате.
Супер, получилось! Расскажите подалуйста, где найти описание этих регистров? у меня есть только https://www.owen.ru/uploads/ki_prm_trm202_033.pdf
разобрался, там 16бит... нужно перевести в 10ку. Спасибо!

Кирилл84
06.12.2018, 22:52
Спасибо большое за помощь!

konstatafit
13.12.2018, 14:26
ребятэ)подскажите как сделать пуск работы(программы) контролера при появлении питания 220? .плк150АМ
чтобы не нажимать кнопку Старт-Стоп каждый раз .

Andrew_Stranger
13.12.2018, 15:12
ребятэ)подскажите как сделать пуск работы(программы) контролера при появлении питания 220? .плк150АМ
чтобы не нажимать кнопку Старт-Стоп каждый раз .
Онлайн--Создание загрузочного приложения. Кнопку программно лучше отключить, если не хотите самопроизвольного останова программы.

ВладиславВладимирович
16.12.2018, 21:05
Прошу оказать поддержку в решении вопроса управления приводом ASDA-A2(slave) с ПЛК110-30[М02](master) по Modbus rtu через порт rs-485 и если можно написать короткий пример на cfc c использованием библиотеки Modbus.lib. Решить все задачи через конфигуратор не получается, а подробного руководства по использованию библиотеки, которая почти не откоментирована, не нашел и на форуме поднимается много вопросов, ответы на которые ведут к старым примерам, написанным, в основном, на st
В примере прошу показать как считывать положение раз в 200ms(или другое время) энкодера:
Address: 0066H 0067H
Default: 0x0
Range: -32768 ~ +32767
Data Size: 32-bit
Format: Decimal
И как записывать по команде значение скорости:
Address: 0116H 0117H
Unit: 0.1rpm
Range: -60000 ~ +60000
Data Size: 32bit
Format: DEC
Если есть где-то подробная инструкция по использованию modbus.lib, кроме старых примеров, то прошу дать ссылку
Буду признателен если поможете разобраться в этом вопросе, чтоб не задавать больше глупых вопросов.

RV9WFJ
17.12.2018, 06:55
Проще ST освоить чем на CFC это дело поднимать. А старые примеры не становятся менее работоспособными со временем.

Dmitro
18.12.2018, 08:20
Можно ли установить targets без привилегий администратора?
Может вручную подредактировать что-то?

Sulfur
18.12.2018, 10:57
ВладиславВладимирович
Тут не важно CFC это ST, или вообще LD. Нужно подключить Universal Modbus Device, создать для него карту регистров и гнать данные туда. В качестве примера показываю организацию обмена с Дельта С2000. Организация для ASDA практически ничем не отличается.
40416

Сочинил тут пример "по заявкам радиослушателей".
ЗЫ: Не являюсь профессиональным программистом, так что не судите с пристрастием. ;)

ВладиславВладимирович
18.12.2018, 12:11
Благодарю за ответ. А из каких побуждений Вы используете разный Universal Modbus Device для чтения и записи?

Sulfur
18.12.2018, 12:23
На чтение работает постоянно с периодом в 100мс (в моем случае), а на запись только по изменению значений в регистрах. Это такая попытка сэкономить ресурс EEPROM регистров VFD, т. к. внятной инфы о допустимом количестве записей в эти регистры у меня нет. Дополнительно в проекте используется контроль обрыва связи (переменные ErrCom и LastAdress). К слову, два таких проекта воплощенных в железе уже год как работают без проблем.

IVM
18.12.2018, 14:53
ВладиславВладимирович
Тут не важно CFC это ST, или вообще LD. Нужно подключить Universal Modbus Device, создать для него карту регистров и гнать данные туда. В качестве примера показываю организацию обмена с Дельта С2000. Организация для ASDA практически ничем не отличается.
40416

Сочинил тут пример "по заявкам радиослушателей".
ЗЫ: Не являюсь профессиональным программистом, так что не судите с пристрастием. ;)

Для какого ПЛК сделан проект ? В проекте 3 ошибки.

Sulfur
18.12.2018, 14:55
IVM
Я и не заявлял, что это рабочий проект. Там вообще отсутствует целевая платформа. Я просто показал примеры под поставленную задачу. Кстати, хотелось бы узнать какие.

А самый первый скрин - из рабочего проекта.

SilverMan
20.12.2018, 10:14
Добрый день.
В codesys 2.3 в режиме эмуляции при трассировке не могу зайти в некоторые модули.
Долго искал, нашел, что в 3-й версии надо использовать виртуальный контроллер CODESYS Control Win V3.
А как быть в 2.3?

Massmeter
22.12.2018, 08:57
Изучаю CODESYS 2.3. Тренируюсь на ПЛК63РРРРИИ.М. За день прочитал лекции Кирилла Гайнутдинова "prosto_CoDeSys_1-2-3" Все понял, все работает на ПЛК. Не могу разобраться самостоятельно с программированием работы ЖКИ. Подскажите (ссылку) на видеоуроки по ЖКИ или на лекции Кирилла. Имею опыт программирования ПР200.

Коськовецкий Владислав
22.12.2018, 12:10
Добрый день.
В codesys 2.3 в режиме эмуляции при трассировке не могу зайти в некоторые модули.
Долго искал, нашел, что в 3-й версии надо использовать виртуальный контроллер CODESYS Control Win V3.
А как быть в 2.3?

В Codesys 2.3 тоже есть возможность использования виртуального контроллера.

Коськовецкий Владислав
22.12.2018, 12:13
Изучаю CODESYS 2.3. Тренируюсь на ПЛК63РРРРИИ.М. За день прочитал лекции Кирилла Гайнутдинова "prosto_CoDeSys_1-2-3" Все понял, все работает на ПЛК. Не могу разобраться самостоятельно с программированием работы ЖКИ. Подскажите (ссылку) на видеоуроки по ЖКИ или на лекции Кирилла. Имею опыт программирования ПР200.

Вам нужна библиотека Work_Mode.lib, саму библиотеку и описание работы с ней можно найти в архиве по ССЫЛКЕ (https://www.owen.ru/uploads/121/lib_owen_navigator-plc63_v5.zip) .

Massmeter
22.12.2018, 12:53
Вам нужна библиотека Work_Mode.lib, саму библиотеку и описание работы с ней можно найти в архиве по ССЫЛКЕ (https://www.owen.ru/uploads/121/lib_owen_navigator-plc63_v5.zip) .

Установил библиотеку. Там 8 функций. Идет их описание. Какие из них обязательно применить для отображения int или real? Может есть уроки на эту тему?

ASo
22.12.2018, 13:27
В каком режиме экрана - рабочем или монопольном?

Massmeter
22.12.2018, 13:32
В рабочем.

ASo
22.12.2018, 14:11
ShowDInt и ShowReal для целых и вещественных.
Сделайте отдельную задачу с циклом в 200мс и вывлдите либо по экранного на текущий экран либо по изменению переменной

Vi001
02.01.2019, 12:05
Здравствуйте. Имеется контроллер ПЛК73, который является Slave устройством. На этапе пуска выяснилось, что контроллер (неизвестен) верхнего уровня имеет нестандартный протокол ModBus.
Вопрос - какая библиотека поможет мне сделать Slave устройство с нестандартным протоколом? если кто-то имел подобный опыт - прошу помочь примером проекта

melky
02.01.2019, 13:28
Нестандартных протоколов Modbus не существует, вернее это уже просто какой-то протокол но не Modbus.
И как вы это выяснили интересно ?

rayman0v0
02.01.2019, 16:01
Здравствуйте! Может быть, кто-нибудь имел опыт работы с контроллерами шагового двигателя OSK-RA? Возникла проблема при подключении контроллера к ПЛК-150 по RS-485, протокол Modbus RTU. Чтение из всех регистров прекрасно получается, но вот запись в восьмибитные регистры через BYTE-переменные (да и через BOOL тоже) не получается от слова совсем. Сам по себе контроллер ШД при подключении к компьютеру напрямую через RS-282 работает отлично, для контроллеров ШД есть простенькая программа для управления по Modbus. На восьмибитных регистрах у них завязаны жизненно важные функции, без которых ШД запустить невозможно (подача тока на обмотки двигателя, задание команды на выполнение, ток простоя, дробление шага, направление).
Прикладываю даташит на контроллер ШД, таблицы с адресами регистров начинаются на 31 странице.
http://onitex.ru/files/Documentation/OSK/datasheet_OSKRA.pdf


Может быть, кто-нибудь знает, как осуществить запись в восьмибитные регистры? (Write bytes 0x71 не работает).

rayman0v0
02.01.2019, 17:12
А как происходит чтение ВОСЬМИ битных регистров? Какой командой?

ЗЫ
Подозреваю, что нет там никаких восьми битных регистров, на самом деле регистры 16 битные, просто используются только восемь младших бит

в Universal Modbus Device выбираю 8 bit input module, указываю адрес регистра устройства и в поле Command "Read holding registers (0x03)". В данном случае считывала значение, соответствующее установленной скорости передачи данных по модбас. Значение вернул верно.

petera
02.01.2019, 17:29
А как происходит чтение ВОСЬМИ битных регистров? Какой командой?

ЗЫ
Подозреваю, что нет там никаких восьми битных регистров, на самом деле регистры 16 битные, просто используются только восемь младших бит

Так и есть
Для записи так называемых ВОСЬМИ битных регистров используется стандартная команда 06 - запись одного Holding Registers, точно такая же как и для записи обычных регистров

40645 40646
При смене типа регистра посылки полностью совпадают.

ЗЫ
Используйте в Universal Modbus Device модули Register output, команда 0х6
и для чтения тоже можно Register input использовать

rayman0v0
02.01.2019, 17:48
Вы мне прямо жизнь спасли! Огромное вам спасибо!! :D

Dmitro
11.01.2019, 09:48
В связи с древностью и редкостью СОМ порта, возникла необходимость залить в ПЛК150 программу по Езернет. Есть ли возможность напрямую соединить комп и ПЛК и залить по этому соединению.

Технически комп будто бы может это делать (функция сетевой мост).
Заранее спасибо.

krollcbas
11.01.2019, 10:01
40727
Конечно есть. Соединяете пачкордом и пользуйтесь.

melky
11.01.2019, 10:17
Dmitro, только в зависимости от вашей сетевой карты на ПК может потребоваться кроссовый патчкорд, если вы напрямую будете цепляться. В ПЛК Овен этой серии сетевая без автоопределения приемо-передачи.

Azazello
11.01.2019, 11:42
Здравствуйте! Проблема с ПЛК154-220.A-M, пропадает связь(ошибка связи(#0):произошло отключение).
Использую Ethernet подключение, через некоторое время(около 3х минут) после установки связи с ПЛК, пропадает связь с контроллером. Подскажите пожалуйста, как это лечится?


PLCInfo:
PLC model MODEL PLC 154
Binary VERSION 2.17.0
Need Target version 2.10
Compiled: 13:35:11 Apr 6 2017
MAC 6A:77:00:FF:A4:DB
IP 10.214.97.117
GATE 10.214.100.10
MASK 255.255.248.0
PIC upper version is 09
Licence unlimited
Universal DAC
PIC lower version is 0e

Dmitro
11.01.2019, 11:44
Спасибо! Хорошо бы внести эту информацию в РЭ.

Crusash
11.01.2019, 17:42
Спасибо! Хорошо бы внести эту информацию в РЭ.

Хорошо бы прочитать эту информацию в РЭ.

werewolf_92
14.01.2019, 12:16
Здравствуйте! Проблема с ПЛК154-220.A-M, не могу найти в конфигурации при настройки целевой платформы.
Есть такие:
ПЛК154-220.A-L
ПЛК154-220.I-L
ПЛК154-220.I-M
ПЛК154-220.U-L
ПЛК154-220.U-M

petera
14.01.2019, 12:40
Здравствуйте! Проблема с ПЛК154-220.A-M, не могу найти в конфигурации при настройки целевой платформы.
Есть такие:
ПЛК154-220.A-L
ПЛК154-220.I-L
ПЛК154-220.I-M
ПЛК154-220.U-L
ПЛК154-220.U-M

И где это "-220" можно было увидеть при выборе целевой платформы?
40744

Что вполне логично, т.к. в названиях таргетов нет упоминания о напряжении питания ПЛК
40745

romeg
14.01.2019, 17:41
Здравствуйте, подскажите пожалуйста как правильно написать код. при включении кнопки таймер должен отсчитать 5 секунд и счетчик увеличивается на 1 и так 5 раз.

taimer(IN := in1, PT:= T#5s);
a :=taimer.Q;
B:=5;
schet1(CU:= a, RESET:=pop , PV:= B);
pop := schet1.q ;
otschet := schet1.CV ;

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

Sangre
14.01.2019, 17:48
Добрый день! Подскажите какие танцы с бубном необходимо проделать, чтобы подключить контроллер ПЛК110 к панели оператора по Ethernet?
Согласно инструкции ПЛК110 имеет IP 10.0.6.10. В проекте создал ModBus (Slave), в нём ModBus[FIX] с модулем TCP[VAR] и портом 502. В настройках панели оператора (Delta DOP-W157B) настроил IP 10.0.6.3 и указал, что контроллер искать по IP 10.0.6.10 c портом 502. Так как и загружать программу и связываться с панелью оператора одновременно по Ethernet не получается, загружал по USB-кабелю. Панель стартует и не ругается на обрыв связи. Визуально обмен идёт. Но как только переходит на любой экран с адресацией, сразу выдаёт ошибки. Делаю вывод, что неправильно настроил ModBus (Slave).
Заранее спасибо за ответ.

capzap
14.01.2019, 18:08
Здравствуйте, подскажите пожалуйста как правильно написать код. при включении кнопки таймер должен отсчитать 5 секунд и счетчик увеличивается на 1 и так 5 раз.

taimer(IN := in1, PT:= T#5s);
a :=taimer.Q;
B:=5;
schet1(CU:= a, RESET:=pop , PV:= B);
pop := schet1.q ;
otschet := schet1.CV ;

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

наверное как то так бы выглядел один из вариантов

capzap
14.01.2019, 18:10
Добрый день! Подскажите какие танцы с бубном необходимо проделать, чтобы подключить контроллер ПЛК110 к панели оператора по Ethernet?
Согласно инструкции ПЛК110 имеет IP 10.0.6.10. В проекте создал ModBus (Slave), в нём ModBus[FIX] с модулем TCP[VAR] и портом 502. В настройках панели оператора (Delta DOP-W157B) настроил IP 10.0.6.3 и указал, что контроллер искать по IP 10.0.6.10 c портом 502. Так как и загружать программу и связываться с панелью оператора одновременно по Ethernet не получается, загружал по USB-кабелю. Панель стартует и не ругается на обрыв связи. Визуально обмен идёт. Но как только переходит на любой экран с адресацией, сразу выдаёт ошибки. Делаю вывод, что неправильно настроил ModBus (Slave).
Заранее спасибо за ответ.

так если у Вас есть возможность зайти в онлайн в контроллер, узнайте какой именно IP у контроллера

Sangre
14.01.2019, 18:33
Я использую Ethernet для подключения ноута к контроллерам постоянно, так что не в самом IP дело. Панель не ругается, как если бы там стояло неправильное подключение (это она делает сразу в таких случаях). Ругаться начинает когда открываю любой скрин, где есть переменные ModBus(Slave). Причём, не всегда на одни и те же. В зависимости от набора переменных.
Вы хотите сказать, что настройка была правильная и искать проблему надо в другом месте?

petera
14.01.2019, 18:47
...В проекте создал ModBus (Slave), в нём ModBus[FIX] с модулем TCP[VAR] и портом 502. В настройках панели оператора (Delta DOP-W157B) настроил IP 10.0.6.3 и указал, что контроллер искать по IP 10.0.6.10 c портом 502. Так как и загружать программу и связываться с панелью оператора одновременно по Ethernet не получается, загружал по USB-кабелю. Панель стартует и не ругается на обрыв связи. Визуально обмен идёт. Но как только переходит на любой экран с адресацией, сразу выдаёт ошибки. Делаю вывод, что неправильно настроил ModBus (Slave).

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

capzap
14.01.2019, 20:29
Вы хотите сказать, что настройка была правильная и искать проблему надо в другом месте?
как я могу сказать что настройка правильная, если я её даже не видел? Проект приложите

Согласно инструкции ПЛК110 имеет IP 10.0.6.10а если в плк кто то уже "лазил" и адрес сменил? По поводу:"Визуально обмен идёт" это как определяется по светодиодам сетевой карты, так ответ с идентификатором ошибки так же отправляется как и правильный ответ


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


переходит на любой экран с адресацией, сразу выдаёт ошибкину про это уже написали про направление куда "копать"

Sangre
14.01.2019, 20:30
Тема не раскрыта
А где какие-либо упоминания, что Вы в слейве создали переменные для обмена с панелью?
Или их там вообще нет?
Если переменные(регистры) в конфигурации ПЛК всё же есть, то какие адреса регистров ПЛК на экране панели используются.

Под первым адресом устройства около 100 переменных типа 2 byte, под вторым 50 битовых, под третьим 50 битовых, под четвёртым 3 переменных типа 2 byte. Каждое устройство выделено в в отдельный ModBus(Slave), имеет модуль ModBus[FIX] со связью по TCP. Разделены таким образом для удобства работы с ними. При работе с RS-232 никаких проблем не возникало. В данный момент работа по RS-232 временно не возможна и есть попытка обойти всё по Ethernet.

Sangre
14.01.2019, 20:35
как я могу сказать что настройка правильная, если я её даже не видел? Проект приложите
а если в плк кто то уже "лазил" и адрес сменил? По поводу:"Визуально обмен идёт" это как определяется по светодиодам сетевой карты, так ответ с идентификатором ошибки так же отправляется как и правильный ответ

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

ну про это уже написали про направление куда "копать"

Это уже грубовато с Вашей стороны.

Не проблема скинуть проект, давайте почту.

petera
14.01.2019, 21:19
Под первым адресом устройства около 100 переменных типа 2 byte, под вторым 50 битовых, под третьим 50 битовых, под четвёртым 3 переменных типа 2 byte. Каждое устройство выделено в в отдельный ModBus(Slave), имеет модуль ModBus[FIX] со связью по TCP. Разделены таким образом для удобства работы с ними. При работе с RS-232 никаких проблем не возникало. В данный момент работа по RS-232 временно не возможна и есть попытка обойти всё по Ethernet.

Т.е. раньше тоже было три слейва в конфигурации, в каждом использовался порт RS232, а каждый слейв имел разные адреса 1, 2, 3

Теперь Вы пытаетесь в слейвах RS232 заменить на TCP?

Если так, то полагаю придется и порты делать в них разные, например 502, 503, 504

Sangre
14.01.2019, 22:26
Т.е. раньше тоже было три слейва в конфигурации, в каждом использовался порт RS232, а каждый слейв имел разные адреса 1, 2, 3

Теперь Вы пытаетесь в слейвах RS232 заменить на TCP?

Если так, то полагаю придется и порты делать в них разные, например 502, 503, 504

Спасибо огромное, добрый человек! В этом был корень моего непонимания. Всё сразу заработало. :cool:

werewolf_92
17.01.2019, 07:26
Всем привет. Помогите разобраться в Codesys , есть ПЛК154 А-М подключил его к программе, прописал все входы в глобальных переменных. Я пытаюсь подключить в аналоговый вход температурную вставку ТС5008-4 У2(выходной сигнал 4-20мА, диапазон измерений 0-250градусов) Проблема в том что я не могу получить значение температуры , как это сделать. может что-то с настройками. Помогите !!!!

alex55
17.01.2019, 09:43
Проект представить на обозрение надо, ну а на вскидку в конфигурации в параметрах модуля тип сенсора указать не забыл? Как подключен токовый вход? Вообщем одни вапросы..

werewolf_92
17.01.2019, 11:22
VAR_GLOBAL
DI_1 AT %IX0.0 : BOOL; (* Discrete input 4bit *)
DI_2 AT %IX0.1 : BOOL; (* Discrete input 4bit *)
DI_3 AT %IX0.2 : BOOL; (* Discrete input 4bit *)
DI_4 AT %IX0.3 : BOOL; (* Discrete input 4bit *)
DO_1 AT %QX1.0 : BOOL; (* Discrete output 4bit *)
DO_2 AT %QX1.1 : BOOL; (* Discrete output 4bit *)
DO_3 AT %QX1.2 : BOOL; (* Discrete output 4bit *)
DO_4 AT %QX1.3 : BOOL; (* Discrete output 4bit *)
SO_1 AT %QX2.0 : BOOL; (* Special output *)
AI_1 AT %ID3.0 : REAL; (* Analog input *)
AI_2 AT %ID4.0 : REAL; (* Analog input *)

AI_3 AT %ID5.0 : REAL; (* Analog input *) В это аналоговый вход подключена температурная вставка.

AI_4 AT %ID6.0 : REAL; (* Analog input *)
AO_1 AT %QD7.0 : REAL; (* Analog output *)
AO_2 AT %QD8.0 : REAL; (* Analog output *)
AO_3 AT %QD9.0 : REAL; (* Analog output *)
AO_4 AT %QD10.0 : REAL; (* Analog output *)
MODbus AT %QB11.1.0 : BYTE;(*ModBus *)
RegInp AT %IW11.1.0.0: WORD; (*register input Address-51(Holding)*)
END_VAR
40798 Конфигурация ПЛК
В программе
PROGRAM PLC_PRG
VAR
AI_3:REAL;

a: REAL;
END_VAR


и делаю вывод переменной
a:=AI_3;

werewolf_92
17.01.2019, 11:23
В итоге выходит в AI_3 (-1.#QNAN)

Andrew_Stranger
17.01.2019, 12:07
AI_3 у вас и в PLC_PRG и в VAR_GLOBAL. Объявите ее только в конфигураторе.

alex55
17.01.2019, 12:43
Переменные нужно объявлять только в одном месте либо в конфигураторе либо в VAR_GLOBAL..

werewolf_92
18.01.2019, 07:23
убрал свою ошибку. однако после опроса снова выходит ошибка. т.е. при подключении показывает температуру правильно, но проходит период опроса и все "ломается"

alex55
18.01.2019, 07:48
В смысле "ломается"- через 0,5s перестает показывать? Сотые тысячные доли могут меняться, можно увеличить период опроса, галка "эмуляция" не стоит?

werewolf_92
18.01.2019, 08:34
да, перестает показывать текущую температуру и выходит ошибка -1.QNAN
Эмуляция отключена, подключен ПЛК154
При увеличении времени опроса мы только видим параметр дольше и все, потом снова эта ошибка

Andrew_Stranger
18.01.2019, 11:25
Выкладывайте проект.

werewolf_92
18.01.2019, 11:43
ВОТ проэкт

VAR_GLOBAL
DI_1 AT %IX0.0 : BOOL; (* Discrete input 4bit *)
DI_2 AT %IX0.1 : BOOL; (* Discrete input 4bit *)
DI_3 AT %IX0.2 : BOOL; (* Discrete input 4bit *)
DI_4 AT %IX0.3 : BOOL; (* Discrete input 4bit *)
DO_1 AT %QX1.0 : BOOL; (* Discrete output 4bit *)
DO_2 AT %QX1.1 : BOOL; (* Discrete output 4bit *)
DO_3 AT %QX1.2 : BOOL; (* Discrete output 4bit *)
DO_4 AT %QX1.3 : BOOL; (* Discrete output 4bit *)
SO_1 AT %QX2.0 : BOOL; (* Special output *)
AI_1 AT %ID3.0 : REAL; (* Analog input *)
AI_2 AT %ID4.0 : REAL; (* Analog input *)

AI_3 AT %ID5.0 : REAL; (* Analog input *) В это аналоговый вход подключена температурная вставка.

AI_4 AT %ID6.0 : REAL; (* Analog input *)
AO_1 AT %QD7.0 : REAL; (* Analog output *)
AO_2 AT %QD8.0 : REAL; (* Analog output *)
AO_3 AT %QD9.0 : REAL; (* Analog output *)
AO_4 AT %QD10.0 : REAL; (* Analog output *)
MODbus AT %QB11.1.0 : BYTE;(*ModBus *)
RegInp AT %IW11.1.0.0: WORD; (*register input Address-51(Holding)*)
END_VAR
40798 Конфигурация ПЛК
В программе
PROGRAM PLC_PRG
VAR
a: REAL;
END_VAR


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

Andrew_Stranger
18.01.2019, 12:55
Файл проекта нужен. А что такое температурная вставка и куда она вставляется?

PaulKaz
22.01.2019, 15:16
Добрый день.
Можете подсказать причину ошибки: "#2000: 2000. 3. 2 5: 6: 7 # 5 Module not created Template for a module Id=106 bad ..." в конце строки идут кракозябры.
ПЛК150

werewolf_92
23.01.2019, 09:08
Файл проекта нужен. А что такое температурная вставка и куда она вставляется?

40845
Вот такой вид имеет, подключается к аналоговому входу

werewolf_92
23.01.2019, 09:21
мне нужно лишь увидеть показания температуры на данном этапе. в дальнейшем уже задачи будут усложняться. Просто не понятно что сейчас может быть не так, показывает а потом повторного опроса все пропадает, время опроса менял.

Mr Green
23.01.2019, 09:34
Без файла проекта это гадание. https://dropmefiles.com поможет выложить файл проекта.

Andrew_Stranger
23.01.2019, 10:43
Почему тип датчика в конфигураторе - термопара, если у вас аналоговый датчик 4-20 ма. Термин температурная вставка некорректный.

Дмитрий021
24.01.2019, 05:23
Есть ли возможность использовать библиотек PID_Regulators на ПЛК 160, а если нет, то на что ее можно заменить (блок управления задвижкой без указателя положения)?

werewolf_92
24.01.2019, 07:13
https://dropmefiles.com/FRP61

werewolf_92
24.01.2019, 07:14
если ставлю тип датчика аналоговый 4-20 ма, то показывает (-60.5) хотя это невозможно

alex55
24.01.2019, 09:31
Похоже что это датчик ТС-термометр сопротивления, а градуировка какая-надо выбрать правильно в конфигураторе..

werewolf_92
25.01.2019, 06:46
Похоже что это датчик ТС-термометр сопротивления, а градуировка какая-надо выбрать правильно в конфигураторе..

вот конфигурация ПЛК, вы об этом говорите?
40870

alex55
25.01.2019, 09:39
Да именно это, но сначала разберитесь, что это за датчик температуры и по какой схеме подключается, ввести в конфигуратор, далее вызывать в программе. Главное разберись с типом датчика и его характеристикой.. как то так или для вашего случая вариант 2 с выходом 4-20ма

Morfey
25.01.2019, 15:30
Здравствуйте,подскажите пожалуйста многоуважаемые , пишу проект для комбикормового цеха (работаю там)в CFC ,как можно реализовать(с помощью какого блока/блоков) кнопку тара?
что проделано- связал панель с контроллером и весовым преобразователем тензодатчика(на котором сидит сам тензодатчик)
получил цифру (положил груз- получил вес на панели)
разобрался с запятыми )))
теперь нужна кнопка тара
оборудование- сп310(мастер)+плк110/60+seneca z-sg+тензодатчик
P/S пишу первый раз ,никогда с этим не сталкивался ,электриком начал работать в 2000 году

SVKEnergy
30.01.2019, 08:25
Здравствуйте. Кто-нибудь использует архивацию на USB-флеш карту в ПЛК110[M02] с передачей архивных данных на верхний уровень по OPC HDA? Получится ли реализовать на ПЛК110[M02] следующий функционал: При работающем канале связи считываем текущие данные с контроллера, как только связь с верхним уровнем пропадает контроллер начинает формировать архив данных на USB-флеш карту. Как только связь восстанавливается SCADA вычитывает с архива контроллера отсутствующие значения по OPC HDA и возможно очищает флеш карту. Можно ли это реализовать на Codesys и насколько стабильно это будет работать?

SVKEnergy
30.01.2019, 14:33
И вдогонку еще один вопрос: Контроллер ПЛК110[M02] есть с системой исполнения: L - искусственное ограничение до 360 байт и М - ограничение до 100 кБайт. На что это влияет?

alex55
30.01.2019, 14:50
Ограничение памяти в области ввода вывода- ограничивает число подключаемых модулей расширения вводов выходов, при использовании одного голого контроллера ни на что не влияет..

Sulfur
31.01.2019, 21:28
SVKEnergy
В L-версии пространство Modbus ограничено в 360 байт, т. е. всего 180 регистров чтения\записи (если WORD). Других отличий нет. Пользовал и L и M. Таргеты разные, переносил проект с М на L, пришлось пересоздавать область обмена. Возможно я просто не нашел как это сделать правильно. Пришел к мнению, что если в эксплуатации ПЛК больше чем два, то лучше остановиться на какой либо одной версии.

Parhelia
01.02.2019, 07:48
Здравствуйте,подскажите пожалуйста многоуважаемые , пишу проект для комбикормового цеха (работаю там)в CFC ,как можно реализовать(с помощью какого блока/блоков) кнопку тара?
что проделано- связал панель с контроллером и весовым преобразователем тензодатчика(на котором сидит сам тензодатчик)
получил цифру (положил груз- получил вес на панели)
разобрался с запятыми )))
теперь нужна кнопка тара
оборудование- сп310(мастер)+плк110/60+seneca z-sg+тензодатчик
P/S пишу первый раз ,никогда с этим не сталкивался ,электриком начал работать в 2000 году
данные Тара с тензодатчика у вас где-то дальше используются, видимо для отображения на панели оператору
делаете кнопку Тара на панели, булевой переменной, передаёте её в контроллер и по этой булевой переменной "минусуете" данные с тензодатчика, чтобы оператор увидел только цифры чистого веса продукта, который он "добавляет" в тару
но лучше это делать просто по таймеру "задержки" и зажигать "лампочку" оператору, чтобы оператор не тыкал постоянно пальцем в экран, на однообразных "постовых" операциях на конвейере это нереально выбешивает и через какое-то время операторы начнут ныть и придётся переделывать
на сfc делаете логику на простых элементах, специального блока никакого нет
вся "сложность" только в запоминании первого измерения веса Тары и последующей вычитания этого значения от переменной тензодатчика
может кто работал с весами знает как сделать по другому, но логика в принципе такая

ilinsarov
03.02.2019, 00:21
Здравствуйте! Не покажите пример простой программы для считывания дискретного выхода у slave устройства по modbus?

ilinsarov
03.02.2019, 23:10
Здравствуйте! Не покажите пример простой программы для считывания дискретного выхода у slave устройства по modbus?

Отвечу сам себе: дело не в программе, а в настройках канал Modbus slave и соотношение входов/выходов.

Осинский Алексей
05.02.2019, 10:35
firelion, перенес Ваше сообщение в тему по конфигурации обмена в CODESYS 3.5 (ссылка (http://www.owen.ru/forum/showthread.php?t=23897&p=298320&viewfull=1#post298320)). Ответ ждет Вас в той теме.

SVKEnergy
07.02.2019, 15:39
Здравствуйте. Есть ли у контроллера ПЛК110[M02] (обновленный) возможность считывания DOUBLE переменных?

Вадим Брест
08.02.2019, 23:02
доброй ночи товарищи. я полный чайник в программировании. подскажите с чего начать. и да книга программирование для чайников не подходит. уровень у меня ваще никакой. хотя может он и есть но я об этом не знаю.

Вадим Брест
08.02.2019, 23:02
но хотелось бы работать с OWEN и его языками

romeg
09.02.2019, 00:25
Здравствуйте как вызвать подпрограмму на языке St ?

Andrew_Stranger
09.02.2019, 22:06
Здравствуйте как вызвать подпрограмму на языке St ?http://kipshop.ru/Primeri/Samples_plc1xx/Samples/11_POU.zip

uJIb9IHAWK
11.02.2019, 12:52
Добрый день. Подскажите можно ли присвоить переменным в регистрах Modbus (slave) свойство RETAIN PERSISTENT, чтобы значения сохранялись не только при выключении, но и при загрузке измененной программы?

RadisT
13.02.2019, 10:37
Добрый день! подбираю оборудование для реализации проекта диспетчеризации ИТП. Вопрос в следующем: есть ли у Овена готовое решение для подключения к Свободно программируемым контролерам узлов учета фирмы Логика, с их чудо протоколом СПСеть. поиск по форуму не дает результатов. библиотека для КоДеСис, или Функциональный Блок, или еще как-то?

SVKEnergy
13.02.2019, 15:36
Добрый день! подбираю оборудование для реализации проекта диспетчеризации ИТП. Вопрос в следующем: есть ли у Овена готовое решение для подключения к Свободно программируемым контролерам узлов учета фирмы Логика, с их чудо протоколом СПСеть. поиск по форуму не дает результатов. библиотека для КоДеСис, или Функциональный Блок, или еще как-то?

Почитайте здесь: https://masterscada.insat.ru/news/?id=199

RadisT
13.02.2019, 16:43
спасибо! данное решение обязывает к использованию МастерСКАДы. я уточню свой вопрос: как подключить к ПЛК на CoDeSys СПСеть, не перешивая и не убивая CoDeSys. т.е. оставив дальнейшее подключение ПЛК к СКАДА системе любыми вариантами, без ограничений.

Sergey111
18.02.2019, 09:50
Здравствуйте. Пытаюсь подключиться к контроллеру плк63 вылазит такая ошибка что делать41266

Зинько Владислав
18.02.2019, 10:37
Здравствуйте. Пытаюсь подключиться к контроллеру плк63 вылазит такая ошибка что делать41266

Добрый день!

На ПЛК 63/37 имеется ограничение на количество программных компонентов в проекте (POU), включая компоненты из библиотек.
1. Если в Вашем проекте имеются неиспользуемые библиотеки - удалите их.
2. Если Вы используете какой-то функционал из библиотеки Util, то Вы можете открыть ее как проект и экспортировать в Ваш проект только те POU, которые Вам нужны (предварительно отключив библиотеку Util из проекта).
3. Если количество POU все еще превышает предел, нужно объединить связанные методы (функции) в одну. С точки зрения хорошего кода не лучший вариант, но в данной ситуации выбирать особо не приходится.

Leshiy07
18.02.2019, 16:00
подскажи в стандартной библиотеке until вызвал блок LIN_TRAFO, клацнул на нем правой клавишей и нашел интересный параметр - который вызывает ещё один вход "EN " не нашел нигде объяснения прошу вашей помощи.

PS прошу сильно не пинать я совсем зеленый в codesys
41282

Andrew_Stranger
18.02.2019, 19:18
Enable, разрешение работы ФБ.

Sergeoga815
22.02.2019, 09:46
Здравствуйте.
ПЛК150. Требуется из окна визуализации по нажатию гр. элемента "Кнопка" изменить состояние дискретного выхода. Элемент настроен так, как показано на фото. Однако, при запуске проекта по её нажатию слышен только нехарактерный лёгкий щелчок, и состояние естественно не меняется. Как я понял, нажатие выполняет команду "Write values" в переменную .do4, а требуется выполнения "Force values". Скажите, возможно ли и как из окна визуализации форсить переменные, отвечающие за дискретные выходы контроллера? Или я что-то делаю не так?
Спасибо!
https://pp.userapi.com/c845522/v845522060/1ac417/G3qiYQvMbzs.jpg

drumpel
24.02.2019, 09:07
Здравствуйте. У меня проблема. Установил cjdesys 2.3.9 с сайта овен. Скачал библиотеки скопировал их в нужную паку но среди целевых платформ (выбирается при создании проекта)плк овен не появились. Я копировал и в ручную и автоматическим установщиком библиотек. У меня windows 10 если что.

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

drumpel
24.02.2019, 09:43
Здравствуйте. У меня проблема. Установил cjdesys 2.3.9 с сайта овен. Скачал библиотеки скопировал их в нужную паку но среди целевых платформ (выбирается при создании проекта)плк овен не появились. Я копировал и в ручную и автоматическим установщиком библиотек. У меня windows 10 если что.

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

alex55
24.02.2019, 09:45
Таргет файлы надо установить, плк и появятся..

sosna
25.02.2019, 16:36
Всем добрый день. Обращаюсь к тем специалистам кто имеет опыт работы с датчиками метки. Проблема следующая. Нами был собран на ПЛК 110 с быстрыми входами лентопротягивающий механизм, который по команде протягивает материал с метками. Датчик ловит метку лазер рисует марку и дает команду на протяжку материала и далее цикл повторяется. Тянущий механизм для точности протяжки собран на сервоприводе, который управляется ПЛК импульсами по прерыванию таймера. Датчик метки подключен к быстрому входу. Быстрый выход непосредственно дает команду на останов серводвигателя. Проблема состоит в том, что мы не можем получить заданную точность позиционирования. Требуется плюс , минус 1 десятка. У нас получается до 2 десяток в одну или другую сторону. Может кто то сталкивался с такой проблемой и знает как повысить точность.

alexxx
27.02.2019, 13:08
Здравтвуйте. Может ли кодесис отправлять емейл по событию? Не плк, а сам кодесис?

RV9WFJ
28.02.2019, 06:35
Не плк, а сам кодесис?Что вы имели в виду? Программа написанная на CoDeSys может, штатными средствами без применения библиотек не может.

Yaroslav_22
28.02.2019, 09:22
Здравствуйте
Появился мелкий вопрос, который не дает покоя:41460
CodeSys2.3 ПЛК150. Некоторые элементы POU отображаются серым цветом (как бы не активны) , но по факту они работают. В чем может быть причина? Проект прогружал несколько раз, ни чего не помогает, что не так делаю?

werewolf_92
05.03.2019, 07:13
Здравствуйте.
У меня вопрос.
Подключаю к ПЛК 154 термометр сопротивления ТС5008-4(имеет выходной сигнал 4..20мА, диапазон измерений 0..250С),но не могу получить результат.
Перепробовал разные способы подключения, Universal sensors, Termocouple sensors,Termoresistor sensors.

capzap
05.03.2019, 07:25
Здравствуйте.
У меня вопрос.
Подключаю к ПЛК 154 термометр сопротивления ТС5008-4(имеет выходной сигнал 4..20мА, диапазон измерений 0..250С),но не могу получить результат.
Перепробовал разные способы подключения, Universal sensors, Termocouple sensors,Termoresistor sensors.

какая, точно, модель ПЛК?

werewolf_92
05.03.2019, 08:23
какая, точно, модель ПЛК?

ПЛК 154 А-М

capzap
05.03.2019, 10:48
https://www.owen.ru/uploads/5/cxema_podklyucheniya_plk150_154.jpg подключали согласно этой картинке?
Таргет выерный выбран? В настройках Unifed signal sensor тип сенсора выбран правильно?

Andrew_Stranger
05.03.2019, 12:19
Здравствуйте.
У меня вопрос.
Подключаю к ПЛК 154 термометр сопротивления ТС5008-4(имеет выходной сигнал 4..20мА, диапазон измерений 0..250С),но не могу получить результат.
Перепробовал разные способы подключения, Universal sensors, Termocouple sensors,Termoresistor sensors.

Вы уже полгода его подключаете.

werewolf_92
05.03.2019, 13:07
https://www.owen.ru/uploads/5/cxema_podklyucheniya_plk150_154.jpg подключали согласно этой картинке?
Таргет выерный выбран? В настройках Unifed signal sensor тип сенсора выбран правильно?

да все именно так

LitDV
05.03.2019, 18:02
Здравствуйте!
Собираюсь автоматизировать управление светом с помощью ПЛК 110.
Подскажите, как правильно организовать управление кнопочными выключателями?
Простое out1=in1 не правильно, т.к. после отпускания кнопки свет выключится.
Рассматриваю вариант с триггером, когда лампочка включается при отпускании кнопки:
ft(CLK:=in1 );
IF ft.Q THEN
out1:=TRUE;
END_IF
Пока только в теории разбираюсь, до стенда еще не дошел.
Собственно вопрос: это оптимальный код или есть еще проще ( у меня около 60 "лампочек")...
Спасибо!

PS. Если подскажете готовые проекты управления светом по кнопке, или документацию, где почитать, буду признателен.
Я только начал изучать Codesys, но т.к. не программист - очень сложно разобраться. А примеров пока не нашел.
Возможно похожие вопросы были уже, извините, но 600 страниц буду перечитывать очень долго...

LitDV
06.03.2019, 08:53
Спасибо, добрый человек!!!

werewolf_92
06.03.2019, 12:22
Возьмите резистор из 500...4500 Ом. Мультиметром убедитесь что оно. Подключите соответственно, поставьте тип R_5000, заводской сброс, проект/очистить все, загрузится и смотреть.
?

ВЫ хотите таким образом проверить , работает ли ПЛК?? Если так,то я уже подключал ТСМ-50м другой конфигурации по RTDsensor -r428-50.
А вот именно ЭТУ ТС5008 не могу подключить

capzap
06.03.2019, 12:46
ВЫ хотите таким образом проверить , работает ли ПЛК?? Если так,то я уже подключал ТСМ-50м другой конфигурации по RTDsensor -r428-50.
А вот именно ЭТУ ТС5008 не могу подключить

а помимо подключения внешний блок питания использовали?

armatyr
06.03.2019, 13:53
ПЛК 100-220 моргает светодиод "питание". Больше ничего. Как можно быстрее устранить неисправность. Какая схема блока питания (внутреннего)

werewolf_92
07.03.2019, 08:09
а помимо подключения внешний блок питания использовали?

подключаем бок питания 24В

yurgin_757
07.03.2019, 12:58
Доброго времени суток...
Спрошу пока здесь. Существует ли возможность использовать библиотеку mercury.lib для codesys v.2.3 используя для опроса "меркурия 230" ПЛК-73М. Пока из бегло прочитанного понял что изначально эта биб-ка заточена под ПЛК 100 серии с встроенной биб-кой UNM которая вызывается в обработчиках биб-ки mercury.lib. И все же хотелось бы надеяться что есть возможность опроса меркурия ПЛК-73 с двумя портами rs-485 на борту, если у кого-то есть информация или пример такой реализации, выручите пожалуйста.

melky
07.03.2019, 13:23
Скорее всего придется переделывать на работу с портом напрямую, а не через UNM.
Когда-то на ПЛК100 пытался это проделать и даже получал данные, но проект отвалился и я забил. (были зависания порта, что требовало перезапуска ПЛК)

Nixe
11.03.2019, 09:13
Доброго времени суток.
Вопрос к гуру промышленной электроники. Можно ли подключить к ПЛК110 ультразвуковой сенсор напрямую к быстрым входам-выходам? Что еще нужно будет с аппаратной стороны для корректной работы датчика? Конкретный датчик XNQ40-60E, найден на алиэкспрессе. Внешний вид и ТХ по ссылке https://ru.aliexpress.com/item/Ultrasonic-sensor-Ultrasonic-sensors-XNQ40-60E-one-Ultrasonic-level-sensor/32380251255.html?spm=a2g0s.9042311.0.0.300033edPgA Du4

yurgin_757
11.03.2019, 10:13
Скорее всего придется переделывать на работу с портом напрямую, а не через UNM.
Когда-то на ПЛК100 пытался это проделать и даже получал данные, но проект отвалился и я забил. (были зависания порта, что требовало перезапуска ПЛК)

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

CheshireCat
11.03.2019, 22:43
Здравствуйте, у меня несколько странная проблема. Я не могу сохранить проект. То есть я нажимаю "Сохранить как..." и даже вижу мои предыдущие попытки сохранения, то есть они как-бы есть. Но через проводник Windows я эти файлы не вижу, скрытые файлы я проверял. Я перезагружал компьютер, и не потерял свой проект, то есть на диске он есть, но вижу я файл проекта только средствами CoDeSys, с помощью других программ нет. Так же происходит не только с файлами проекта, но и любыми файлами (архив, pdf), которые создает эта программа.

ASo
12.03.2019, 06:33
ОС Win 7 и выше?

CheshireCat
12.03.2019, 07:11
Да. Win 10.

Владислав Г.
12.03.2019, 09:22
Здравствуйте!

Можно ли без лишних преобразований вытащить из переменной типа TIME раздельно дни, часы, минуты в формате WORD или REAL?

CheshireCat
12.03.2019, 11:55
Да. Win 10.

Andrew_Stranger
12.03.2019, 12:55
Здравствуйте!

Можно ли без лишних преобразований вытащить из переменной типа TIME раздельно дни, часы, минуты в формате WORD или REAL?

Делить, делить и еще раз делить

CheshireCat
12.03.2019, 14:02
Я понял то что программа ведет себя максимально странно. Запуск её от имени администратора, программа не видала тех файлов проекта, которые я сохранял, запустив её не от имени администратора. Но начала нормально сохранять файлы. Сделав проект заново (благо код я забекапил) я сохранил проект. Затем запустил его из файла проекта (не от имени администратора), почему то открылся старый проект(который я делал в первый раз). Я не знаю что произошло...