Вход

Просмотр полной версии : Панели оператора СП3xx. Вопросы и ответы



Страницы : 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Алексей КИПОВЕЦ
04.02.2017, 11:09
Спасибо буду пробовать. Попробую отпишусь.

Алексей КИПОВЕЦ
04.02.2017, 15:13
Ну собственно попробовал как вы сказали. Установил шаг 30 секунд. Я правильно понимаю? В разделе график указываю регистр прибора. В данном случае это 4х2. ОВЕН ТРМ202 подключен к порту PLK. Запись значений осуществляется в энергонезависимую память в регистр PFW4060. Бит старта записи я не указываю. После загрузки в панель вижу пустой экран...Посмотрите может я что то упускаю или не так делаю...

Евгений Кислов
04.02.2017, 15:27
Ну собственно попробовал как вы сказали. Установил шаг 30 секунд. Я правильно понимаю? В разделе график указываю регистр прибора. В данном случае это 4х2. ОВЕН ТРМ202 подключен к порту PLK. Запись значений осуществляется в энергонезависимую память в регистр PFW4060. Бит старта записи я не указываю. После загрузки в панель вижу пустой экран...Посмотрите может я что то упускаю или не так делаю...

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

Алексей КИПОВЕЦ
04.02.2017, 15:50
Да получилось. На главном экране в значениях отображаются 156 и 650 вместо 15,6 65,0. В функциях цифрового дисплея через раздел разрядность я все исправил и показания на главном экране стали отображаться нормально. Вопрос в том как правильно указать разрядность для трендов. Что бы значения на тренде указывались верно.

Алексей КИПОВЕЦ
04.02.2017, 15:58
Вот ваш файл с моими корректировками.

petera
04.02.2017, 16:23
Да получилось. На главном экране в значениях отображаются 156 и 650 вместо 15,6 65,0. В функциях цифрового дисплея через раздел разрядность я все исправил и показания на главном экране стали отображаться нормально. Вопрос в том как правильно указать разрядность для трендов. Что бы значения на тренде указывались верно.
Никакой косметики и математики не недо!
Настройте шкалу, аналогично дисплеям
29169
И будет Вам счастье!

Алексей КИПОВЕЦ
04.02.2017, 16:29
Спасибо большое вам. Вы мне очень помогли. При помощи функциональной области и математичиеской операции и копирования на графике все отображается верно. Осталось разобраться с уставками для прибора по ТРМ-202 функция 0х10.

Алексей КИПОВЕЦ
04.02.2017, 18:18
Не подскажите еще один вопрос. А есть какие то решение по изменению толщины пера на графике тренда. А то в настройка графика их нет.

Евгений Кислов
04.02.2017, 19:04
Не подскажите еще один вопрос. А есть какие то решение по изменению толщины пера на графике тренда. А то в настройка графика их нет.

Нет, к сожалению, подобная настройка отсутствует.

SokolovS
05.02.2017, 13:22
Есть ли какие-то переменные окружения в макросах, которые позволяют отличить СП270 от СП3ХХ?

petera
05.02.2017, 16:39
Есть ли какие-то переменные окружения в макросах, которые позволяют отличить СП270 от СП3ХХ?
Может поможет
PSW20 число точек экрана по горизонтали
PSW21 число точек экрана по вертикали
соответственно в СП3хх
PSW20=800
PSW21=480
а у СП270
PSW20=480
PSW21=234
Достаточно в макросе анализировать один из этих регистров,например, PSW21

xoxa
06.02.2017, 14:37
Всех приветствую. Каким образом можно сделать шкалу с заполнением, которая бы могла изменять значения от отрицательного до положительного по одному параметру PSW ? Аналогом может служить шкала http://www.owen.ru/forum/showthread.php?t=14132&page=4&p=100686&viewfull=1#post100686.

Спасибо.

petera
06.02.2017, 15:23
Всех приветствую. Каким образом можно сделать шкалу с заполнением, которая бы могла изменять значения от отрицательного до положительного по одному параметру PSW ? Аналогом может служить шкала http://www.owen.ru/forum/showthread.php?t=14132&page=4&p=100686&viewfull=1#post100686.

Спасибо.
Используйте стандартную линейку

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

ЗЫ.
А если речь идет о внешнем виде, как по ссылке

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

Алексей КИПОВЕЦ
06.02.2017, 20:13
Подскажите новичку. панель оператора ОВЕН СП307-Р. Как сбрасывать данные тренда на USB через порт USB-A без задействования внутренней памяти. Т.е. архив пишется сразу на USB.

Евгений Кислов
06.02.2017, 20:20
Подскажите новичку. панель оператора ОВЕН СП307-Р. Как сбрасывать данные тренда на USB через порт USB-A без задействования внутренней памяти. Т.е. архив пишется сразу на USB.

С помощью элемента Архивирование на USB.

На вкладке Архив задайте Кол-во записей в файле=1 и Цикл=1 секунда - при таких настройках каждую секунду в файл архива будет дозаписываться текущее значение регистров, выбранных на вкладке Данные.

На вкладке Файл укажите имя файла архива и символ-разделитель - рекомендуется ставить ; (точка с запятой) - это позволит без проблем открывать файл в Excel.

На вкладке Дата/Время поставьте галочку для записи в архив метки времени. На вкладке Хранилище - выберите первый из регистров для буфера архива.

Прикладываю пример. Запустите его в эмуляции - и в корне диска D:\ начнет писаться архивный файл test.csv.
Для того, чтобы запустить этот проект в панели, необходимо на вкладке Файл выбрать ID устройства=0 (в эмуляции ID соответствует номеру жесткого диска ПК: 0 - C:\, 1 - D:\ и т.д).

Алексей КИПОВЕЦ
06.02.2017, 21:13
Сделал все как вы и говорили, но сам файл архива на флеш в Excel не создается даже в эмуляции. Хотя ваш файл примера работает замечательно. Посмотрите может я снова что то не так делаю...

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

У вас в настройках архивирования Кол-во записей в файле = 0, а надо - 1.

Алексей КИПОВЕЦ
06.02.2017, 21:31
Исправил все тоже даже после загрузки в панель СП307 спустя время файл не создается, хотя измерения идут тренд спокойно пишется. После извлечения флеш нет никакой информации об ошибке или потере связи. Посмотрите. Высылаю подправленный исходник.

Евгений Кислов
06.02.2017, 21:47
Поставьте для хранилищ архивов регистры PSW (например, 400 / 420 / 440). У меня после этого в эмуляции стали корректно записываться все три файла.

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

Алексей КИПОВЕЦ
06.02.2017, 22:23
Спасибо большое вы мне очень помогли. Правда пришлось сделать каждую вкладку архива глобальной и запись пошла в режиме эмуляции. Потом изменил формат с PSW на PFW и запись на флеш карту тоже идет. Спасибо большое за помощь.

Алексей КИПОВЕЦ
07.02.2017, 00:54
Помогите новичку разобраться. Панель оператора ОВЕН СП307. Необходимо с панели записать значения в регистр ОВЕН ТРМ202. Зписавыю значение уставки. Как я понял значения в регистр записываются фукцией 0х10 с применением макросов. За основу брал пример "Организация обмена через макросы" на сайте. Но в своем примере никак не могу добиться постоянно выбивает ошибку. Проект прикладываю.

Евгений Кислов
07.02.2017, 07:12
Помогите новичку разобраться. Панель оператора ОВЕН СП307. Необходимо с панели записать значения в регистр ОВЕН ТРМ202. Зписавыю значение уставки. Как я понял значения в регистр записываются фукцией 0х10 с применением макросов. За основу брал пример "Организация обмена через макросы" на сайте. Но в своем примере никак не могу добиться постоянно выбивает ошибку. Проект прикладываю.

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

xoxa
07.02.2017, 16:04
Каким образом можно управлять видимостью вставленного изображения?

Евгений Кислов
07.02.2017, 17:34
Каким образом можно управлять видимостью вставленного изображения?

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

xoxa
07.02.2017, 19:25
Евгений, спасибо.

Алексей КИПОВЕЦ
07.02.2017, 20:29
Спасибо большое, Евгений Кислов. Все получилось с уставками. Параметр с цифрового ввода записывается корректно. Наконец то разобрался с глобальным макросом. А это получается если мне нужно записывать значения в обеих уставках по каждому каналу то необходимо просто добавить дополнительный макрос и описание в глобальном макросе?

Евгений Кислов
07.02.2017, 20:34
Спасибо большое, Евгений Кислов. Все получилось с уставками. Параметр с цифрового ввода записывается корректно. Наконец то разобрался с глобальным макросом. А это получается если мне нужно записывать значения в обеих уставках по каждому каналу то необходимо просто добавить дополнительный макрос и описание в глобальном макросе?

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

petera
07.02.2017, 21:41
Помогите новичку разобраться. Панель оператора ОВЕН СП307. Необходимо с панели записать значения в регистр ОВЕН ТРМ202. Зписавыю значение уставки. Как я понял значения в регистр записываются фукцией 0х10 с применением макросов. За основу брал пример "Организация обмена через макросы" на сайте. Но в своем примере никак не могу добиться постоянно выбивает ошибку. Проект прикладываю.

Почему для реализации записи одного регистра функцией 0х10 упорно продвигают идею с использованием макросов на Си?

Сказано же было, что прелесть панели СП3хх в том, что переключение между функцией 0х06 функцией 0х10 осуществляется через второй бит регистра PFW36
если PFW36.2 = 0, то используется функция 0х06
если PFW36.2 = 1, то используется функция 0х10

Кто-то когда-то сказал, что у него не получилось, наверно руки просто кривые.

ПРОВЕРЕНО И РАБОТАЕТ!!!!
Причем переключить тип функции можно "на лету".

Эксперимент демонстрирующий переключение функций
Элементарный проект
29227
Кнопка Операции с данными
29228 29229
Таким образом каждое нажатие кнопки однократно записывает в регистр 4х0 константу FFFF(65535)
Переключатель с подсветкой
29230 29231
Каждое нажатие переключателя меняет функцию на противоположную.

Проект загружен в реальную панель
Панель подключена к СОМ порту компьютера
В качестве слейва будет использоваться PeakHMI MODBUS serial RTU slave simulator http://www.hmisys.com/
в этом симуляторе есть монитор, который позволяет видеть команды мастера

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

В исходном состоянии PFW36.2=0
Первые два запроса - команды записи с функциями 0х06
затем на панели был нажат переключатель (PFW36.2=1)
по этому, следующие два запроса - команды записи с функциями 0х10
после этого снова был нажат переключатель (PFW36.2=0)
последний запрос использует функцию 0х06.
29233

Алексей КИПОВЕЦ
07.02.2017, 21:48
Это получается дополнительно вызвать функцию TRM в пользовательском макросе? Если я не ошибаюсь это будет выглядеть так?

Евгений Кислов
07.02.2017, 21:50
Это получается дополнительно вызвать функцию TRM в пользовательском макросе? Если я не ошибаюсь это будет выглядеть так?

Почти все верно, только будет MyMask1, MyMask2 и т.д.



WORD MyMask1=PSW[270];
WORD MyMask2=PSW[271];
...

Линар
07.02.2017, 23:05
Всем привет подскажите а есть ли воможность ввода отрицательных значений в строку ввода цифровых данных?если да ,как реализовать это? харанее спасибо
http://www.picshare.ru/uploads/170207/B719T3es1J_thumb.jpg (http://www.picshare.ru/view/7900576/)

petera
07.02.2017, 23:40
Всем привет подскажите а есть ли воможность ввода отрицательных значений в строку ввода цифровых данных?если да ,как реализовать это? харанее спасибо
http://www.picshare.ru/uploads/170207/B719T3es1J_thumb.jpg (http://www.picshare.ru/view/7900576/)

Формат задайте десятичный
29250

Алексей КИПОВЕЦ
07.02.2017, 23:49
Спасибо большое разобрался. Записывается по всем заначениям нормально. Вот только опять проблема с USB. В режиме эмуляции все отлично записываеться на диске D создаются файл и в них пишутся значения архивов. Но после загрузки в панель СП307Р индикация о загрузке на USB идет, но сама карта в итоге остается пустой. Не подскажите в чем может быть проблема?

petera
07.02.2017, 23:58
Спасибо большое разобрался. Записывается по всем заначениям нормально. Вот только опять проблема с USB. В режиме эмуляции все отлично записываеться на диске D создаются файл и в них пишутся значения архивов. Но после загрузки в панель СП307Р индикация о загрузке на USB идет, но сама карта в итоге остается пустой. Не подскажите в чем может быть проблема?

Так как флешка у Вас содержит один логический диск, он для панели - ID 0
А в проекте Вы оставили наверно ID 1
29253
Замените на ID 0

Алексей КИПОВЕЦ
08.02.2017, 00:04
К сожалению ставил тоже 0 и по индикатору на флешке видно что загрузка идет. Частоту цикла ставил 1 секунду. Количество записей в файле 1

Линар
08.02.2017, 01:34
понял ,спасибо )

Евгений Кислов
08.02.2017, 07:04
К сожалению ставил тоже 0 и по индикатору на флешке видно что загрузка идет. Частоту цикла ставил 1 секунду. Количество записей в файле 1

Выложите ваш проект, пожалуйста.

Алексей КИПОВЕЦ
08.02.2017, 08:25
Выкладываю проект. Для преэкта использую USB флеш отформатированный под Fat32 емкостью 16Гб и типом USB 2.0

Евгений Кислов
08.02.2017, 09:16
Выкладываю проект. Для преэкта использую USB флеш отформатированный под Fat32 емкостью 16Гб и типом USB 2.0

Добрый день, Алексей. Посмотрел проект.

1. Для одного из архивов у вас для Хранилища указан регистр PFW257. Но в то же время в настройках проекта вы настроили экспорт времени в PFW256 - время занимает 6 регистров, так что у вас перекрылась область памяти. Укажите для хранилища другой регистр (и лучше не выбирать для них странные числа типа 300257, как по мне).

2. Используйте для имен архивов более короткие имена, не содержащие пробелов.

У меня после упомянутых изменений ваш проект заработал нормально (имена архивов уже мои):

29257

Алексей КИПОВЕЦ
08.02.2017, 13:49
По поводу странных чисел поправте меня если я ошибаюсь. Числа выбираю потому что в каждом из графиков размера хранилища в срезах - 50000. Архивирую во внутреннюю память PFW измеренные значения в течении одного месяца. Согласно формулы расчета количества регистров необходимо 300000 регистров для архивации каждого из параметров. По этому к первому из регистров допустим будет PFW263 добавляю 300000

Евгений Кислов
08.02.2017, 14:03
По поводу странных чисел поправте меня если я ошибаюсь. Числа выбираю потому что в каждом из графиков размера хранилища в срезах - 50000. Архивирую во внутреннюю память PFW измеренные значения в течении одного месяца. Согласно формулы расчета количества регистров необходимо 300000 регистров для архивации каждого из параметров. По этому к первому из регистров допустим будет PFW263 добавляю 300000

Я понял, ошибки в этом нет - но, в целом, такие числа просто сложнее запомнить, а в расчетах можно ошибиться.
Я не вижу причин, по которым бы не стоило использовать для хранилищ регистры из пользовательской области памяти (257-4095) - у вас же архив пишется сразу на USB, так что много места буфер не займет, достаточно делать разрывы в 20 регистров (например, PSW400-420-440).

petera
08.02.2017, 14:17
По поводу странных чисел поправте меня если я ошибаюсь. Числа выбираю потому что в каждом из графиков размера хранилища в срезах - 50000. Архивирую во внутреннюю память PFW измеренные значения в течении одного месяца. Согласно формулы расчета количества регистров необходимо 300000 регистров для архивации каждого из параметров. По этому к первому из регистров допустим будет PFW263 добавляю 300000

Для 50 000 срезов потребуется не 300 000 регистров, а больше

один срез это 7 регистров ( 1 регистр архивируемый параметр + 6 регистров временной метки - год, месяц, день, час, мин, сек)
реально в архиве графика срезов будет на 1 больше, чем указано в настройках тренда, так работает кольцевой буфер архивирования срезов.
Еще нужно место для адресов кольцевого буфера - четыре регистра
ИТОГО для 50 000 срезов потребуется
(1 +6) х (50 000 +1) +4 = 350 011 регистра
не слабый довесочек из 50 011 регистров
По этому следующий график должен начинаться
350 011 + 263 = 350274
а не с 300263
Если не верите, то в конце месяца увидите, как второй график "даст дуба", потому, что первый график испортит во втором адреса кольцевого буфера и сохраненную информацию на начало месяца.

Алексей КИПОВЕЦ
08.02.2017, 14:39
Да согласен использовать PSW можно но в случает отключения питания на панель история измеряемой величины в панели не сохраниться и промотреть ее уже невозможно непосредственно через панель. PSW - энергонезависимая память, а PFW - энергонезависимая память. Так это или я все таки ошибаюсь?

Евгений Кислов
08.02.2017, 14:44
Да согласен использовать PSW можно но в случает отключения питания на панель история измеряемой величины в панели не сохраниться и промотреть ее уже невозможно непосредственно через панель. PSW - энергонезависимая память, а PFW - энергонезависимая память. Так это или я все таки ошибаюсь?

Все верно - но я ведь говорю не о тренде, а о буферах архивации (элемент Архивирование на USB, вкладка Хранилище). Для них можно спокойно использовать PSW. Для трендов выберите PFW и поставьте галочку В авто. области.

Алексей КИПОВЕЦ
08.02.2017, 19:44
Спасибо большое за помощь Евгению Кислову и Рetera. Вы мне очень помогли. С архивацией и записью на флеш разобрался. С количеством регистров тоже. У меня вопрос как сделать что бы на флеш в Excel файл писались не только целые но и десятичные значения измеряемого параметра. К примеру измеренное значение 93,5 а в архиве 93. В функции Архивация USB установлен формат DEC.

Евгений Кислов
08.02.2017, 19:45
Спасибо большое за помощь Евгению Кислову и Рetera. Вы мне очень помогли. С архивацией и записью на флеш разобрался. С количеством регистров тоже. У меня вопрос как сделать что бы на флеш в Excel файл писались не только целые но и десятичные значения измеряемого параметра. К примеру измеренное значение 93,5 а в архиве 93. В функции Архивация USB установлен формат DEC.

Настройте разрядность нужным образом (это рядом с выбором формата).

Алексей КИПОВЕЦ
08.02.2017, 19:57
Получается если у меня 4 разрядный дисплей на ОВЕН ТРМ202 то мне необходимо указать в архивирование на USB/Данные всего знаков 3 дробная часть 1?

Евгений Кислов
08.02.2017, 20:06
Получается если у меня 4 разрядный дисплей на ОВЕН ТРМ202 то мне необходимо указать в архивирование на USB/Данные всего знаков 3 дробная часть 1?

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

Алексей КИПОВЕЦ
08.02.2017, 20:18
Да так и сделал но к сожалению на флеш в таблице Excel выводит некоректное значение 11 июн. хотя измеряемый формат 11.4. Я так понимаю формат ячеек не верно задается, но в проекте его не оговаривают. Что посоветуете?

Евгений Кислов
08.02.2017, 20:33
Да так и сделал но к сожалению на флеш в таблице Excel выводит некоректное значение 11 июн. хотя измеряемый формат 11.4. Я так понимаю формат ячеек не верно задается, но в проекте его не оговаривают. Что посоветуете?

Вероятно, не 11.4, а 11.6. Но смысл я понял. Это уже на стороне Excel.

Я могу посоветовать следующее:

1. Открываете файл любым текстовым редактором (например, Блокнотом)
2. Выбираете команду Заменить, заменяете в файле все точки на запятые
3. Сохраняете файл как .csv (или как .txt, а потом вручную меняете формат)
4. Теперь при открытии в Excel значения с плавающей точкой будут отображаться нормально

Вероятно, можно сделать конвертацию и непосредственно в Excel (через макросы или что-то в этом духе) - но мне с ним настолько плотно работать не доводилось.

Евгений Кислов
08.02.2017, 21:13
Все же вспомнил о более простом (хотя и не идеальном) варианте.

В Excel заходите в Файл-->Параметры-->Дополнительно и принудительно указываете, что разделителем целой и дробной части является точка. После этого открываете файл архива - в нем все будет нормально. Но это будет распространяться на все файлы.

29303

Алексей КИПОВЕЦ
08.02.2017, 21:58
Спасибо большое. Все получилось и в Excel отлично открываться.

Алексей КИПОВЕЦ
09.02.2017, 16:37
Спасибо большое предложенный вами вариант обработки файла типа csv подошел больше. У меня еще один вопрос по поводу записи значения в регистры прибора ОВЕН ТРМ202. По вашему совету сделал макрос и глобальный макрос на основе примера "Организация обмена через макросы" с сайта ОВЕН. Все записывается и считывается, но нюанс заключается в том что после загрузки проекта в панель захожу на экран с которого ввожу значения в регистры прибора и при переходе на экран происходит сброс значений в приборе, хотя новые значение еще не введенно. Но это первоначально с последующими входами на этот экран такого не происходит. А повторяется только после снятия напряжения. Можете что то подсказать как устранить эту проблему.

petera
09.02.2017, 16:59
Спасибо большое предложенный вами вариант обработки файла типа csv подошел больше. У меня еще один вопрос по поводу записи значения в регистры прибора ОВЕН ТРМ202. По вашему совету сделал макрос и глобальный макрос на основе примера "Организация обмена через макросы" с сайта ОВЕН. Все записывается и считывается, но нюанс заключается в том что после загрузки проекта в панель захожу на экран с которого ввожу значения в регистры прибора и при переходе на экран происходит сброс значений в приборе, хотя новые значение еще не введенно. Но это первоначально с последующими входами на этот экран такого не происходит. А повторяется только после снятия напряжения. Можете что то подсказать как устранить эту проблему.
Это от того, что ф. область с вызовом макросов записи работает непрерывно, а надо бы ее запускать от бита уведомления, который взводить в элементе цифрового ввода.
Естественно, что в ф. области после вызова макроса нужно добавить выкл. бита уведомления.

Алексей КИПОВЕЦ
09.02.2017, 17:14
Это получается указываю в функциональной области бит управления в котором указываю отоброжаемго значения из поля Цифровой ввод. И потом в этой же функциональной области добавляю функцию выключить бит? Я правильно понимаю?

petera
09.02.2017, 18:09
Это получается указываю в функциональной области бит управления в котором указываю отоброжаемго значения из поля Цифровой ввод. И потом в этой же функциональной области добавляю функцию выключить бит? Я правильно понимаю?

В общем я запутался в Вашем проекте!

Слишком много всякой лишней ерунды.
Попробуйте просто снять галку "без первой паузы".
29334

Должно помочь.

Алексей КИПОВЕЦ
09.02.2017, 18:31
А добавляю функцию в функциональной области "выключить бит" и в ней указываю свой бит уведомления. Я правильно понимаю? Да можно и покритиковать проект. Всегда готов к критике и свежему взгляду со стороны. Просто стоит задача выполнять архивацию 3 параметров на USB с возможность просмотра истории в течении месяца по каждому параметру. Каждый параметр должен быть на отдельном экране.

Rake Runner
09.02.2017, 18:36
Пост-простыня критики, картинок, видео и шаманства вместо короткого ответа на простой вопрос через 3... 2... 1...


А добавляю функцию в функциональной области "выключить бит" и в ней указываю свой бит уведомления.
Да, все верно - действие "Бит ВЫКЛ" после вызова макроса.

petera
09.02.2017, 18:51
Пост-простыня критики, картинок, видео и шаманства вместо короткого ответа на простой вопрос через 3... 2... 1...


Да, все верно - действие "Бит ВЫКЛ" после вызова макроса.

С этими Сишными макросами полная ерунда.
Не поможет ни бит уведомления ни снять галку "без первой паузы"
Потому, что
1. Сишный макрос записывает все четыри уставки одновременно! Данные в макрос передаются через PSW270, 271, 272, 273
2. После включения панели в PSW270, 271, 272, 273 находятся "0", которые сразу же после перехода на этот экран будут записаны в ТРМы.
3. Даже если использовать биты уведомления, то если ввести уставку в одно поле ввода, например PSW270, то от бита уведомления остальные уставки запишутся нулевыми.

Rake Runner
09.02.2017, 18:55
С этими Сишными макросами все нормально.

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

Проблем, как обычно, нет - кроме надуманных.

petera
09.02.2017, 18:57
Здесь может помочь только
1. Убрать галку ф. области с макросом
29337
2. добавить на экран с уставками еще одну ф.область с условием "Переход на экран". И прописать в ней функции копирования регистров ТРМов в PSW270, 271, 272, 273

Алексей КИПОВЕЦ
09.02.2017, 19:02
Да спасибо за советы.Так и сделал 4 параметра ввода уставки и 4 функциональных области со своим макросом и битом уведомления. Бит уведомления присвоил через окно Цифровой ввод. В функциональной области прописал сначала вызов макроса, а потом ВЫКЛ. бит. Все в принципе работает нормально.

petera
09.02.2017, 19:03
С этими Сишными макросами все нормально.

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

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

Rake Runner
09.02.2017, 19:06
В пректе "Проблем выше головы", и помимо макросов.
Здесь эти Сишные макросы в принципе лишние. Без них вообще все упрощается до безобразия. В этом проекте нужна только одна ф.область с одним действием, вместо имеющихся шесть штук.

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

Алексей КИПОВЕЦ
09.02.2017, 19:09
Интересно какие еще проблемы у меня?

Rake Runner
09.02.2017, 19:17
Интересно какие еще проблемы у меня?

[HUMOR MODE ON]Очевидно же, главная проблема - перед тем, как начать делать проект, вы не обратились к уважаемому Peter'e лично, спросив его мудрого совета. Теперь Petera в печали (ведь никто не восхитился глубинами его мудрости), а ваш проект зашкварен навека.[HUMOR MODE OFF]

Алексей КИПОВЕЦ
09.02.2017, 20:00
Рetera, мне интересно как при помощи одной функциональной области с одним действием реализовать без применения макросов. Может подскажите?

petera
09.02.2017, 20:44
Так пусть Вам квакающий подскажет, а то я погляжу он только троллить горазд. У меня на форуме 290 различных примеров в виде различных проектов.
У него всего 38 постов, а гонара - хоть отбавляй. Хоть бы один свой проект показал, чего он там умеет.

Rake Runner
09.02.2017, 20:55
Так пусть Вам квакающий подскажет, а то я погляжу он только троллить горазд. У меня на форуме 290 различных примеров в виде различных проектов.
У него всего 38 постов, а гонара - хоть отбавляй. Хоть бы один свой проект показал, чего он там умеет.

Так я уже все подсказал/показал - достаточно было утвердительно ответить на вопрос Алексея, в правильном ли направлении он движется - все остальное он сделал сам.
В итоге у человека готовый проект, который выполняет его задачу (см. #340). Все счастливы. Ну, кроме Peter'ы, которому это не интересно - ему важнее количество постов и "примеров" - потешить самолюбие, очевидно. У меня, разумеется, такого кол-ва постов не будет никогда - я как-то не стремлюсь быть в каждой бочке затычкой. Шел мимо - увидел вопрос - дал ответ - теперь пойду дальше. Дел и так хватает.

petera
09.02.2017, 21:35
Рetera, мне интересно как при помощи одной функциональной области с одним действием реализовать без применения макросов. Может подскажите?

Выложите, плз свой предпоследний вариант проекта, а то я вижу только тот, который в посте #316

ЗЫ
to Rake Runner

В итоге у человека готовый проект, который выполняет его задачу (см. #340). Все счастливы
Задачу-то он выполняет, но если это его первый проект, то начинать учиться надо сразу на рациональных приемах.
А то так и будет дальше делать проекты "лишь бы задача выполнялась".

Rake Runner
09.02.2017, 21:54
начинать учиться надо сразу на рациональных приемах

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

petera
09.02.2017, 22:31
Ну в принципе согласен. Самый рациональный прием уже, кажется, обрисовался - приходишь на форум, описываешь требования к проекту, Petera все делает. Рационально и экономично.

Нет, это не мой подход, все делать за других.
Просто вместо тог, чтобы разобраться с представлением в регистрах чисел с фиксированной точкой, человек начинает изобретать велосипед.
Вот, например, получает он из ТРМ значение давления воды (регистр 4х1) в формате ХХ.х
И хочет сделать тренд и иметь измерительный прибор.
Так вот, вместо того, чтобы просто правильно настроить шкалу измерительного прибора и использовать сразу регистр ТРМ 4х1
Вот так
29340
29339

Делает следующее лишние телодвижения
1. Делает ф. область
29341
2. И привязывает измерительный прибор уже к регистру PSW267
29342
Потому, что настройка шкалы прибора у него такая
29343

Т.е. вместо тог, чтобы всего лишь поменять в шкале цифры 16 на 160, 13 на 130, 8 на 80 понадобилось использовать два промежуточных регистра PSW и мат.вычисления.

Мало тог, ведь у него уже есть значение 4х1 /10 !
В другой ф.области
29345
которую он сделал для тренда.
29346
Почему не использовал PSW259 и для измерительного прибора?
Для меня это загадка.

Так ведь самое смешное, что и эта ф. область не нужна.
Нужно было просто в тренде настроить формат шкалы и тоже сразу использовать регистр ТРМ 4х1

29347

ИТОГО.
На три канала измерения
Шесть лишних ф.областей, двенадцать лишних регистров PSW, шесть лишних математических операций.

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

Алексей КИПОВЕЦ
09.02.2017, 23:45
Petra, вот моя последняя версия проекта. Готов к вашей критике. Да вы правы это мой первый проект. По этому столько вопросов и хотелось бы во всем разобраться по подробнее. С записью вроде бы понял. Читал ваш пост выше про переключение функции чтения записи "на лету". Лишние функциональные области убрал и отрегулировал шкалу по вашему примеру.

petera
10.02.2017, 03:37
Petra, вот моя последняя версия проекта. Готов к вашей критике. Да вы правы это мой первый проект. По этому столько вопросов и хотелось бы во всем разобраться по подробнее. С записью вроде бы понял. Читал ваш пост выше про переключение функции чтения записи "на лету". Лишние функциональные области убрал и отрегулировал шкалу по вашему примеру.

Вы не все лишние ф. области убрали
Вот смотрите, у Вас две ф.области
29349 29350

читают одни и те же регистры ТРМов, только в разные промежуточные PSW регистры
ЗАМЕЧАНИЕ.
У Вас в двух функциях используются одинаковые номера регистра 4х1 с одинаковыми сетевыми адресами ТРМов
29351 29352
Либо Вы ошиблись с сетевыми адресами, либо у Вас пока есть только один ТРМ и Вы специально оставили сетевые адреса одинаковыми.

И так
Первая ф. область читает давление воды (4х1) в промежуточный регистр PSW260, а вторая - этот же 4х1 в PSW256.
PSW260 Вы используете для архивирования на USB и тренда
PSW256 - в аналоговом дисплее
А зачем разные PSW?
Ведь ВСЕГДА, в любой момент времени PSW260=PSW256=4х1
Это касается и каналов измерения температуры и расхода.
Таким образом как минимум одна из ф.областей лишняя.

В принципе обе ф.области копирования регистров ТРМов в промежуточные PSW в Вашем проекте лишние.
Смело можете в трендах, аналоговых дисплеях и в архивировании на USB сразу использовать регистры ТРМов

Теоретически промежуточное копирование c помощью одной ф.области даст прирост общей скорости обмена на шине ModBus, но т.к. читаются только 3 регистра, то невооружённым глазом прироста скорости Вы и не заметите. А вот вторя ф.область ничего не даст.

petera
10.02.2017, 04:46
Читал ваш пост выше про переключение функции чтения записи "на лету".
1. Я думаю, что Вы ошиблись в адресах
29359 29360

2. Если прочитали и решили отказаться от использования скриптов на Си для записи функцией 0х10, то должны были понять механизм переключения между функциями 0х06 и 0х10

переключение между функцией 0х06 функцией 0х10 осуществляется через второй бит регистра PFW36
если PFW36.2 = 0, то используется функция 0х06
если PFW36.2 = 1, то используется функция 0х10
А я нигде не вижу, что Вы сделали PFW36.2 = 1
На лету в Вашем проекте переключать конечно не надо. По этому сделайте ГЛОБАЛЬНУЮ ф.область
29361 29362

Именно эту ф.область я имел ввиду, когда говорил, что в Вашем проекте достаточно иметь всего одну ф.облась.

Замечу, что я в принципе не против использования скриптов на Си.
Тем более, что реализацию функции 0х10 с помощью Си предложил именно я, 2,5 года назад http://www.owen.ru/forum/showthread.php?t=8604&p=149572&viewfull=1#post149572
Но это была панель СП270, в ней нет штатного способа переключения между функциями 0х06 и 0х10. И скрипт на Си был единственным способом.

ИМХО.
Использовать Си нужно тогда, когда без этого нельзя решить задачу стандартными инструментами панели.
Например здесь http://www.owen.ru/forum/showthread.php?t=14173&p=165786&viewfull=1#post165786

Sulfur
10.02.2017, 06:41
Вопрос:
Панель СП307Б, в проекте используется много экранов, соответственно много кнопок перехода. Как сделать так, что бы кнопка перехода отображалась "нажатой" на активном экране, а другие кнопки сбрасывались в "отжато".
Кроме как нарисовать указатель возле кнопки активного экрана я ничего придумать не могу.
29364
29366

Евгений Кислов
10.02.2017, 07:06
Я обычно в таких случаях использую максимально простой вариант - заранее на каждом экране выбираю для кнопки с названием этого экрана "подсвеченное" изображение (из галереи 2). Соответственно, не возникает необходимости вообще управлять чем-то.

По-моему, реальная необходимость в управлении цветами кнопок есть, когда число экранов превышает 20 (а это случается не так уж и часто) - в остальных случаях проще и быстрее сделать Ctrl+C/Ctrl+V и на каждом экране изменить для одной кнопки ее картинку.

29367

Sulfur
10.02.2017, 10:26
Используемые мной кнопки перехода имею состояние "нажато". Вот я и хотел зафиксировать это состояние на активном в данный момент экране. Естественно оно должно сбрасываться в "отжато" при переходе на другой экран. Кроме того, в приведенных мною картинках используется глобальная кнопка "Главный".

Евгений Кислов
10.02.2017, 10:41
Используемые мной кнопки перехода имею состояние "нажато". Вот я и хотел зафиксировать это состояние на активном в данный момент экране. Естественно оно должно сбрасываться в "отжато" при переходе на другой экран. Кроме того, в приведенных мною картинках используется глобальная кнопка "Главный".

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

Алексей КИПОВЕЦ
10.02.2017, 11:39
Petra, спасибо что посмотрели мой проект. Да изначально планируется применение 3 приборов которые подключены к СП307. Но на этапе наладки подключаю только один ТРМ 202 по этому и дублирую их через другие регистры. В адресах я не ошибся. Это только что бы одним прибором проверить все 3 канала измерения и архивации. Конечно на этапе настройки уже на объекте в них будут записаны разные значения. Почему использую дополнительные функциональные области? Все просто они копируют значения регистров приборов ТРМ в регистры памяти PSW панели просто в таком режиме панель работает быстрее. Да можно в каждом элементе тренда прописать напрямую значение регистра ТРМ но в таком случае панель начинает тормозить при переходе с экрана на экран и замедляется быстродействие панели в целом. А если использовать промежуточные регистры панели PWS все довольно быстро работает. В разделе изменения уставок отказался от макроса на СИ и функциональных областей и заменил их кнопкой которая при нажатии инвертирует бит PFW 36.2 в приницепи это аналогичная функция ВКЛ бит PFW 36.2. Без кнопки все таки не получается... Petra, подправте меня если я ошибаюсь.

petera
10.02.2017, 11:51
Petra, спасибо что посмотрели мой проект. Да изначально планируется применение 3 приборов которые подключены к СП307. Но на этапе наладки подключаю только один ТРМ 202 по этому и дублирую их через другие регистры. В адресах я не ошибся. Это только что бы одним прибором проверить все 3 канала измерения и архивации. Конечно на этапе настройки уже на объекте в них будут записаны разные значения. Почему использую дополнительные функциональные области? Все просто они копируют значения регистров приборов ТРМ в регистры памяти PSW панели просто в таком режиме панель работает быстрее. Да можно в каждом элементе тренда прописать напрямую значение регистра ТРМ но в таком случае панель начинает тормозить при переходе с экрана на экран и замедляется быстродействие панели в целом. А если использовать промежуточные регистры панели PWS все довольно быстро работает. В разделе изменения уставок отказался от макроса на СИ и функциональных областей и заменил их кнопкой которая при нажатии инвертирует бит PFW 36.2 в приницепи это аналогичная функция ВКЛ бит PFW 36.2. Без кнопки все таки не получается... Petra, подправте меня если я ошибаюсь.

Ну если с промежуточным копированием регистров приборов ТРМ в регистры памяти PSW у Вас работает быстрее, то оставьте всего одну ф. область, из-за наличия второй уж точно быстрее работать не должна.
А вот насчет ВКЛ бит PFW 36.2 не понял. Какая у Вас кнопка и когда ее нужно нажать, чтобы работало?

Алексей КИПОВЕЦ
10.02.2017, 12:49
Насчет кнопки я имею ввиду на экране уставки на котором 4 цифровых ввода и под ними находиться элемент "кнопка с индикацией". В функциях кнопки указываю инвертировать бит PFW 36.2 и при необходимости записать значение в регистры прибора нажимаю кнопку и при нажатой кнопке значения записываются спокойно.

petera
10.02.2017, 13:05
Насчет кнопки я имею ввиду на экране уставки на котором 4 цифровых ввода и под ними находиться элемент "кнопка с индикацией". В функциях кнопки указываю инвертировать бит PFW 36.2 и при необходимости записать значение в регистры прибора нажимаю кнопку и при нажатой кнопке значения записываются спокойно.

Так ведь каждое нажатие кнопки меняет значение PFW 36.2 на противоположное, или Вы всего один раз нажимаете ее.
И что не так с функцией ВКЛ бит PFW 36.2? Вы делали ф.область глобальной и с запуском "После загрузки проекта"?

Sulfur
10.02.2017, 14:09
Извините, возможно, я чего-то не понял - но элемент Переход на экран не имеет фиксируемого положения Нажато.
Вы используете какой-то другой элемент для переключения экранов?
Использую стандартную кнопку переключения экрана по умолчанию (элемент "Переход на экран"). Если её удерживать, то она меняет цвет и графику. После отпускания возвращается в первоначальный вид.
29393

Скриншот сделан в момент удержания кнопки.
Насколько я понял, у данной кнопки нет нужного мне функционала.

Евгений Кислов
10.02.2017, 14:27
Использую стандартную кнопку переключения экрана по умолчанию (элемент "Переход на экран"). Если её удерживать, то она меняет цвет и графику. После отпускания возвращается в первоначальный вид.
29393

Скриншот сделан в момент удержания кнопки.
Насколько я понял, у данной кнопки нет нужного мне функционала.

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

Алексей КИПОВЕЦ
10.02.2017, 16:48
Petra, спасибо большое все получилось с функцией "ВКЛ БИТ" и да сделал функциональную область глобальной. Все работает отлично. У меня еще один вопрос новичка к примеру подключаю я свои приборы в сеть по протоколу Modbus RTU. Должны быть промежудки между сетевыми адресами приборов или по можно для первого прибора адрес 1, для второго адрес 2, для третьего адрес 3?

petera
10.02.2017, 23:18
Petra, спасибо большое все получилось с функцией "ВКЛ БИТ" и да сделал функциональную область глобальной. Все работает отлично. У меня еще один вопрос новичка к примеру подключаю я свои приборы в сеть по протоколу Modbus RTU. Должны быть промежудки между сетевыми адресами приборов или по можно для первого прибора адрес 1, для второго адрес 2, для третьего адрес 3?
1, 2, 3, ...

SokolovS
27.02.2017, 16:36
Судя по справке, в макросах одним запросом нельзя прочитать или записать несколько битовых регистров
Я ошибся или это можно сделать только нагородив свою функцию?

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

Можно через свою функцию - посмотрите пример.
http://www.owen.ru/forum/showthread.php?t=25952&p=233959&viewfull=1#post233959

petera
27.02.2017, 18:57
Судя по справке, в макросах одним запросом нельзя прочитать или записать несколько битовых регистров
Я ошибся или это можно сделать только нагородив свою функцию?


Можно Reads() и Wtites(), но только кратно 16 шт - 16, 32, 48, и т.д.

petera
27.02.2017, 20:00
Можно Reads() и Wtites(), но только кратно 16 шт - 16, 32, 48, и т.д.
Неужели нет вопросов, как это работает?

Rake Runner
27.02.2017, 20:06
Неужели нет вопросов, как это работает?

Т.е. вы специально даете ответы, которые не имеют смысла без задавания дополнительных вопросов, и ожидаете знаков внимания? Вот это поворот.

Я ради интереса попробовал так:


Reads(HMI_LOCAL_MCH, 0, TYPE_PSB, 256, 16, &PSB[356]);

Предсказуемо не сработало.

Посмотрел проект по ссылке из #367 - в целом, все ясно, процентов 75 задач по манипуляции с памятью он закрывает, остальное можно самому написать по аналогии.
SokolovS'у тоже, видимо, этого хватило.

petera
27.02.2017, 21:18
На счет Writes() я конечно погорячился, все таки я чайник в Си. Догадки были, что по аналогии с группировкой битов PSB в регистры PSB http://www.owen.ru/forum/showthread.php?t=15352&p=113602&viewfull=1#post113602
будет возможность группировать биты 0х/1х также в целые регистры
А вот на счет Reads(), то работает
Например
Reads(PLC, 1, MODBUS_RTU_BIT_1X, 16, 2, &PSW[256]);
биты 1х16..1х47 будут прочитаны в биты регистров PSW256, 257
1х16-->PSW256.00, 1х47-->PSW257.15

Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 3, &PSW[256]);
биты 0х00..0х47 будут прочитаны в биты регистров PSW256, 257, 258
0х00-->PSW256.00 - 0х15-->PSW256.15
0х16-->PSW257.00 - 0х17-->PSW257.31
0х32-->PSW258.00 - 0х47-->PSW258.15
Причем, опять же по аналогии с группировкой битов PSB
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {0..15}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 3, &PSW[256])
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {16..31}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 16, 3, &PSW[256])
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {32..47}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 32, &PSW[256])
т.е. адрес бита в команде берется наименьшим, кратным 16

Rake Runner
27.02.2017, 21:41
А снифф обмена делали? Там реально функции 0x01 и 0x02 в запросе? А то кратность 16-ти позволяет предположить, что в данном случае просто запрашиваются регистры (функцией 0x03/0x04). На ПЛК от ОВЕН, где все области памяти наложены друг на друга, такое, конечно, прокатит, но не на контроллерах с отдельной областью под coils.

petera
27.02.2017, 21:48
А снифф обмена делали? Там реально функции 0x01 и 0x02 в запросе? А то кратность 16-ти позволяет предположить, что в данном случае просто запрашиваются регистры (функцией 0x03/0x04). На ПЛК от ОВЕН, где все области памяти наложены друг на друга, такое, конечно, прокатит, но не на контроллерах с отдельной областью под coils.

Естественно делал.
Используются именно функции 01 и 02
ЗЫ.
Проект
29764 29765

29766 29767

Панель подключена к виртуальному слейву. По коммуникационному монитору видно, что функции именно 01 и 02

https://www.youtube.com/watch?v=G1RlTmB-hKs

29768

Кроме того в Data мониторе реально меняю биты в областях 0х и 1х и они отображаются на экране панели!

petera
27.02.2017, 23:14
По поводу группировки отдельных PSB в один регистр
Вот версия примера для СП300


https://www.youtube.com/watch?v=2HpmVftV0AY

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

SokolovS
28.02.2017, 08:12
Можно через свою функцию - посмотрите пример.
http://www.owen.ru/forum/showthread.php?t=25952&p=233959&viewfull=1#post233959Речь идёт о работе по порту PLC/Download и использовании возможности Modbus работать с несколькими дискретными значениями
Ваш пример не подходит для этого


Можно Reads() и Wtites(), но только кратно 16 шт - 16, 32, 48, и т.д.Ответ и правда малополезный... Будь у меня на руках панель, эти возможности я бы исследовал и самостоятельно.


На счет Writes() я конечно погорячился, все таки я чайник в Си. Догадки были, что по аналогии с группировкой битов PSB в регистры PSB http://www.owen.ru/forum/showthread.php?t=15352&p=113602&viewfull=1#post113602
будет возможность группировать биты 0х/1х также в целые регистры
А вот на счет Reads(), то работает
Например
Reads(PLC, 1, MODBUS_RTU_BIT_1X, 16, 2, &PSW[256]);
биты 1х16..1х47 будут прочитаны в биты регистров PSW256, 257
1х16-->PSW256.00, 1х47-->PSW257.15

Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 3, &PSW[256]);
биты 0х00..0х47 будут прочитаны в биты регистров PSW256, 257, 258
0х00-->PSW256.00 - 0х15-->PSW256.15
0х16-->PSW257.00 - 0х17-->PSW257.31
0х32-->PSW258.00 - 0х47-->PSW258.15
Причем, опять же по аналогии с группировкой битов PSB
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {0..15}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 3, &PSW[256])
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {16..31}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 16, 3, &PSW[256])
Reads(PLC, 1, MODBUS_RTU_BIT_0X, {32..47}, 3, &PSW[256]) эквивалентно Reads(PLC, 1, MODBUS_RTU_BIT_0X, 0, 32, &PSW[256])
т.е. адрес бита в команде берется наименьшим, кратным 16Если верить википедии, в Modbus нет такого выравнивания. Также если верить ей же, то нет и требования запросить ровно 2 байта, а можно запрашивать любое количество регистров, если надо, слейв добавит байтов в ответе. Так же и запись должна работать.

Евгений Кислов
28.02.2017, 08:23
Речь идёт о работе по порту PLC/Download и использовании возможности Modbus работать с несколькими дискретными значениями

В явном виде такая возможность отсутствует. Можно воспользоваться вариантом Petera или использовать Read/Write (там биты поддержаны) через цикл FOR.

Алексей КИПОВЕЦ
04.03.2017, 20:48
Добрый вечер. Помогите разобраться новичку с панелью оператора ОВЕН СП307-Р. Создан проект объемом 9,31 mb. При попытке загрузить проект в панель вылетает сообщение переполнение psw. Уменьшая же проект до объема 8,81 mb проект загружается спокойно. Я так понимаю проблема в слишком большом объеме памяти созданного проекта. Подскажите есть ли возможность загружать более масштабные проекты в панель и как ее реализовать.

Евгений Кислов
04.03.2017, 20:51
Добрый вечер. Помогите разобраться новичку с панелью оператора ОВЕН СП307-Р. Создан проект объемом 9,31 mb. При попытке загрузить проект в панель вылетает сообщение переполнение psw. Уменьшая же проект до объема 8,81 mb проект загружается спокойно. Я так понимаю проблема в слишком большом объеме памяти созданного проекта. Подскажите есть ли возможность загружать более масштабные проекты в панель и как ее реализовать.

Для начала можно попробовать п. 1.7 из FAQ:
http://www.owen.ru/catalog/sensornie_paneli_operatora_oven_sp3xx/81265010

Алексей КИПОВЕЦ
04.03.2017, 21:01
Да пробовал, но не сильно помогает уменьшает всего лишь на 1 mb. Хоть в общих вопросах FAQ п.п. 1.6 пишут что максимальный объем загружаемого проекта в панель 100 mb.

Евгений Кислов
04.03.2017, 21:04
Да пробовал, но не сильно помогает уменьшает всего лишь на 1 mb. Хоть в общих вопросах FAQ п.п. 1.6 пишут что максимальный объем загружаемого проекта в панель 100 mb.

Все верно - панель способна работать и с проектами подобного размера.

Тогда, вероятно, проблема в настройках элементов с историей (типа трендов и архивов) - вы где-то используете в качестве хранилища данных регистры PSW, а их число достаточно ограничено (256 - 4095). Используйте PFW и галочку В авто области.

Алексей КИПОВЕЦ
04.03.2017, 21:21
Т.е. если область памяти используется до 4095 то и перпеполнения быть не должно и проект объемом даже 50mb тоже загрузиться спокойно?

Евгений Кислов
04.03.2017, 21:25
Т.е. если область памяти используется до 4095 то и перпеполнения быть не должно и проект объемом даже 50mb тоже загрузиться спокойно?

Да, именно так. Если же этого не происходит - отправьте проект мне на почту, пожалуйста.

eoldgu
12.03.2017, 10:41
Здравствуйте !!! Подскажите как увеличить толщину линии на историческом графике на СП307. Предполагаю, нужно изменить шаблон, как это сделать ?

Евгений Кислов
12.03.2017, 10:49
Здравствуйте !!! Подскажите как увеличить толщину линии на историческом графике на СП307. Предполагаю, нужно изменить шаблон, как это сделать ?

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

AlexSku
12.03.2017, 19:33
Здравствуйте!

Как в СП3 создать группу радиокнопок (может быть нажата только одна; при нажатии на утопленную последняя поднимается).

Евгений Кислов
12.03.2017, 19:37
Здравствуйте!

Как в СП3 создать группу радиокнопок (может быть нажата только одна; при нажатии на утопленную последняя поднимается).

Можно использовать функциональную область или макросы, чтобы реализовать подобную логику.
Вот релевантный пример:
http://www.owen.ru/forum/showthread.php?t=25318&p=223394&viewfull=1#post223394

SokolovS
14.03.2017, 10:03
Как полностью скомпилировать макросы?
Например, если вписать несуществующую функцию, по F7 макрос всё равно скомпилируется
Если кликнуть правой кнопкой мыши на "Макросы" и выбрать "Компиляция", ошибок тоже не будет
Экспорт проекта и сохранение эмуляции происходят без ошибок
Но при попытке загрузки конфигуратор ругнётся на необъявленную функцию
Попытаться загрузить можно только при наличии панели
Не очень радостно только на объекте узнавать, что макросы не доработаны.

Евгений Кислов
14.03.2017, 10:25
Как полностью скомпилировать макросы?
Например, если вписать несуществующую функцию, по F7 макрос всё равно скомпилируется
Если кликнуть правой кнопкой мыши на "Макросы" и выбрать "Компиляция", ошибок тоже не будет
Экспорт проекта и сохранение эмуляции происходят без ошибок
Но при попытке загрузки конфигуратор ругнётся на необъявленную функцию
Попытаться загрузить можно только при наличии панели
Не очень радостно только на объекте узнавать, что макросы не доработаны.

Такой функционал не предусмотрен. Отладка макросов должна производиться только на панели.

SokolovS
14.03.2017, 10:40
Такой функционал не предусмотрен. Отладка макросов должна производиться только на панели.
Мне бы не отладку, мне скомпилировать надо бы
Компиляция же на компьютере происходит

Евгений Кислов
14.03.2017, 11:00
Мне бы не отладку, мне скомпилировать надо бы
Компиляция же на компьютере происходит

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

Но замечание понятно и справедливо - я передам разработчикам.

SokolovS
14.03.2017, 11:19
Компилятор не выдвигает гипотез насчет наличия на устройстве тех или иных библиотек с теми или иными именами функций - поэтому, повторю, отладка возможна только на реальной панели. Пользователю необходимо самому отслеживать факт существования используемых функций - например, с помощью комментариев.Хочу отметить, что конфигуратор не позволяет загрузить в панель проект с некорректным макросом.
Если подробнее, то переводит панель в режим загрузки и на этом останавливается, не начиная передачу данных. Перезагрузка панели возвращает её в обычный режим, со старым проектом, если не ошибаюсь.


Но замечание понятно и справедливо - я передам разработчикам.Спасибо

v.agoshkin
15.03.2017, 10:36
Всем добрый день!
Как можно с помощью инструмента "Динамическое изображение" перебирать рисунки с прозрачным фоном?

Евгений Кислов
15.03.2017, 10:40
Всем добрый день!
Как можно с помощью инструмента "Динамическое изображение" перебирать рисунки с прозрачным фоном?

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

v.agoshkin
15.03.2017, 10:48
Я где-то видел пример. Но сейчас не могу его найти к сожалению. Но точно видел и делалось это в конфигураторе в расширенном режиме как за мудрено.

Евгений Кислов
15.03.2017, 10:50
Я где-то видел пример. Но сейчас не могу его найти к сожалению. Но точно видел и делалось это в конфигураторе в расширенном режиме как за мудрено.

Расширенный режим не предназначен для пользователей - поэтому в Конфигураторе СП300 он недоступен.

v.agoshkin
15.03.2017, 10:51
А вариант с анимацией изображения я тоже рассматривал. В крайнем случае придется с ним повоевать.

v.agoshkin
15.03.2017, 10:54
Да это понятно что не предназначен. У меня доступ открыт. И когда-то я это делал. Но со временем забылось. Вот думал может у кого то остался примерчик или направили на нужную ветку темы.

petera
18.03.2017, 00:25
Здравствуйте!

Как в СП3 создать группу радиокнопок (может быть нажата только одна; при нажатии на утопленную последняя поднимается).

Если в качестве битов для кнопок использовать разряды регистров PSW, PFW или 4х, то такую группу кнопок можно сделать штатными инструментами без использования ф.областей или макросов.
Так же можно использовать биты PSB, но только если рассматривать группу из 16(32) PSB как один регистр и адрес такого "регистра" будет кратным 16 (256, 272, 288 и т.д.). Пример группировки отдельных PSB в один регистр http://www.owen.ru/forum/showthread.php?t=22915&p=239036&viewfull=1#post239036
Нужно использовать для каждой радиокнопки комбинацию лампы и кнопки, наложенных друг на друга. При этом лампа будет расположена сверху кнопки.
Для того, чтобы была полная иллюзия нажатой или отпущенной кнопки я сделал оформление для лампы полностью повторяющее вид нажатой и отпущенной кнопки.

https://www.youtube.com/watch?v=dOjW0iIr9vY
Остается только сохранить этот вид индикатора в галерее иллюстраций ламп.
Теперь можно делать "бутерброды" из ламп и кнопок.

Вариант 1. Классические радиокнопки, когда нажатие утопленной кнопки не изменяет ее состояние.
Т.к. по условию функционирования радиокнопок нажатой может быть только одна кнопка из группы, то для этого варианта проще всего использовать кнопку "Операции с данными"
Каждая кнопка записывает в регистр число, соответствующее включенному биту - 1, 2, 4, 8, 16 .. 32768. Или проще запомнить значения в формате Hex -1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800, 1000, 2000, 4000, 8000.

https://www.youtube.com/watch?v=tGSqN3d98-I
Вариант 2. Полностью реализует задачу "может быть нажата только одна; при нажатии на утопленную последняя поднимается".
Здесь вместо кнопки "Операции с данными" придется использовать ф. кнопку.

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

Следующее состояние - Зажата
Здесь функция - Записать в регистр число - 8, соответствующего третьему биту регистра, но только если этот бит установлен.
30110

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

zandaqo
18.03.2017, 11:46
Здравствуйте,

Думаем связать два МВ110-8АС (13 датчиков) по модбас с СП3хх для вывода/архивации данных, пара вопросов:
1. С какой ориентировочной сокростью/лагом может панель опрашивать модули? Раз в 5 сек, 10 сек, минуту?
2. Если записывать архив на флешку, можно ли как-то настроить сетевой доступ к флешке, может ли панель расшарить этот файл?

Евгений Кислов
18.03.2017, 12:05
Здравствуйте,

Думаем связать два МВ110-8АС (13 датчиков) по модбас с СП3хх для вывода/архивации данных, пара вопросов:
1. С какой ориентировочной сокростью/лагом может панель опрашивать модули? Раз в 5 сек, 10 сек, минуту?
2. Если записывать архив на флешку, можно ли как-то настроить сетевой доступ к флешке, может ли панель расшарить этот файл?

1. Речь о числе миллисекунд, не секундах. Более точное значение цикла опроса сходу затрудняюсь назвать.
2. Нет.

Эдуард_Н
18.03.2017, 16:25
Если в качестве битов для кнопок использовать разряды регистров PSW, PFW или 4х, то такую группу кнопок можно сделать штатными инструментами без использования ф.областей или макросов.
Так же можно использовать биты PSB, но только если рассматривать группу из 16(32) PSB как один регистр и адрес такого "регистра" будет кратным 16 (256, 272, 288 и т.д.). Пример группировки отдельных PSB в один регистр http://www.owen.ru/forum/showthread.php?t=22915&p=239036&viewfull=1#post239036
Нужно использовать для каждой радиокнопки комбинацию лампы и кнопки, наложенных друг на друга. При этом лампа будет расположена сверху кнопки.
Для того, чтобы была полная иллюзия нажатой или отпущенной кнопки я сделал оформление для лампы полностью повторяющее вид нажатой и отпущенной кнопки.

https://www.youtube.com/watch?v=dOjW0iIr9vY
Остается только сохранить этот вид индикатора в галерее иллюстраций ламп.
Теперь можно делать "бутерброды" из ламп и кнопок.

Вариант 1. Классические радиокнопки, когда нажатие утопленной кнопки не изменяет ее состояние.
Т.к. по условию функционирования радиокнопок нажатой может быть только одна кнопка из группы, то для этого варианта проще всего использовать кнопку "Операции с данными"
Каждая кнопка записывает в регистр число, соответствующее включенному биту - 1, 2, 4, 8, 16 .. 32768. Или проще запомнить значения в формате Hex -1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800, 1000, 2000, 4000, 8000.

https://www.youtube.com/watch?v=tGSqN3d98-I
Вариант 2. Полностью реализует задачу "может быть нажата только одна; при нажатии на утопленную последняя поднимается".
Здесь вместо кнопки "Операции с данными" придется использовать ф. кнопку.

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

Следующее состояние - Зажата
Здесь функция - Записать в регистр число - 8, соответствующего третьему биту регистра, но только если этот бит установлен.
30110

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

Эмуляция почему то не запускается.

petera
18.03.2017, 17:14
Эмуляция почему то не запускается.

Обновил вложение.
Теперь будет запускаться.

anatolys
20.03.2017, 16:46
добрый день.

осваиваю СП307 с архивацией данных на усб. делаю так: тренд, в нём архивация в регистр PSW256, и элемент "Архивация на USB" с чтением из этого регистра.
под модбасу подцеплены два датчика, тягонапоромеры. опрос датчиков раз в 100 мс, тренд выводится с частотой раз в 1 с, чаще не умеет.
получаю строчки с нулевым значением, выглядит это так:

0,-739,2017-03-15,15:12:05
-1,-739,2017-03-15,15:12:05
0,-796,2017-03-15,15:12:06
0,-796,2017-03-15,15:12:06
0,-796,2017-03-15,15:12:06
0,-829,2017-03-15,15:12:07
0,-829,2017-03-15,15:12:07
0,-829,2017-03-15,15:12:07
0,-847,2017-03-15,15:12:08
0,-847,2017-03-15,15:12:08
0,-799,2017-03-15,15:10:09
0,-799,2017-03-15,15:10:09
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,-847,2017-03-15,15:12:08
-1,-780,2017-03-15,15:12:09
-1,-780,2017-03-15,15:12:09
-1,-780,2017-03-15,15:12:09
0,-821,2017-03-15,15:12:28
0,-821,2017-03-15,15:12:28
0,-838,2017-03-15,15:12:29
0,-838,2017-03-15,15:12:29
0,-844,2017-03-15,15:12:29
-1,-855,2017-03-15,15:12:30
-1,-852,2017-03-15,15:12:30
-1,-852,2017-03-15,15:12:30
0,-733,2017-03-15,15:12:31
0,-733,2017-03-15,15:12:31
0,-733,2017-03-15,15:12:31
0,86,2017-03-15,15:12:32
0,86,2017-03-15,15:12:32
0,86,2017-03-15,15:12:32
0,989,2017-03-15,15:12:33
0,989,2017-03-15,15:12:33
0,989,2017-03-15,15:12:33
0,1371,2017-03-15,15:12:34
0,1371,2017-03-15,15:12:34
0,1371,2017-03-15,15:12:34
-1,-143,2017-03-15,15:12:35
-1,-143,2017-03-15,15:12:35
-1,-143,2017-03-15,15:12:35
0,-542,2017-03-15,15:12:36
0,-542,2017-03-15,15:12:36
0,-542,2017-03-15,15:12:36
0,-659,2017-03-15,15:12:37
0,-659,2017-03-15,15:12:37
0,-659,2017-03-15,15:12:37
0,-719,2017-03-15,15:12:38
0,-719,2017-03-15,15:12:38
0,-724,2017-03-15,15:12:38
0,-751,2017-03-15,15:12:39
0,-751,2017-03-15,15:12:39
0,-751,2017-03-15,15:12:39
0,-768,2017-03-15,15:12:40
0,-768,2017-03-15,15:12:40
0,-768,2017-03-15,15:12:40
0,-730,2017-03-15,15:12:41
0,-730,2017-03-15,15:12:41
0,-730,2017-03-15,15:12:41
0,-397,2017-03-15,15:12:42
0,-637,2017-03-15,15:12:42
0,-637,2017-03-15,15:12:42
-1,385,2017-03-15,15:12:43
-1,191,2017-03-15,15:12:43
-1,385,2017-03-15,15:12:43
-1,-720,2017-03-15,15:12:26
0,-799,2017-03-15,15:10:09
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,2002,2017-03-15,15:12:44
0,2002,2017-03-15,15:12:44
0,2002,2017-03-15,15:12:44

и ещё время дублируется.

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

petera
20.03.2017, 17:03
добрый день.

осваиваю СП307 с архивацией данных на усб. делаю так: тренд, в нём архивация в регистр PSW256, и элемент "Архивация на USB" с чтением из этого регистра.
под модбасу подцеплены два датчика, тягонапоромеры. опрос датчиков раз в 100 мс, тренд выводится с частотой раз в 1 с, чаще не умеет.
получаю строчки с нулевым значением, выглядит это так:

0,-739,2017-03-15,15:12:05
-1,-739,2017-03-15,15:12:05
0,-796,2017-03-15,15:12:06
0,-796,2017-03-15,15:12:06
0,-796,2017-03-15,15:12:06
0,-829,2017-03-15,15:12:07
0,-829,2017-03-15,15:12:07
0,-829,2017-03-15,15:12:07
0,-847,2017-03-15,15:12:08
0,-847,2017-03-15,15:12:08
0,-799,2017-03-15,15:10:09
0,-799,2017-03-15,15:10:09
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,-847,2017-03-15,15:12:08
-1,-780,2017-03-15,15:12:09
-1,-780,2017-03-15,15:12:09
-1,-780,2017-03-15,15:12:09
0,-821,2017-03-15,15:12:28
0,-821,2017-03-15,15:12:28
0,-838,2017-03-15,15:12:29
0,-838,2017-03-15,15:12:29
0,-844,2017-03-15,15:12:29
-1,-855,2017-03-15,15:12:30
-1,-852,2017-03-15,15:12:30
-1,-852,2017-03-15,15:12:30
0,-733,2017-03-15,15:12:31
0,-733,2017-03-15,15:12:31
0,-733,2017-03-15,15:12:31
0,86,2017-03-15,15:12:32
0,86,2017-03-15,15:12:32
0,86,2017-03-15,15:12:32
0,989,2017-03-15,15:12:33
0,989,2017-03-15,15:12:33
0,989,2017-03-15,15:12:33
0,1371,2017-03-15,15:12:34
0,1371,2017-03-15,15:12:34
0,1371,2017-03-15,15:12:34
-1,-143,2017-03-15,15:12:35
-1,-143,2017-03-15,15:12:35
-1,-143,2017-03-15,15:12:35
0,-542,2017-03-15,15:12:36
0,-542,2017-03-15,15:12:36
0,-542,2017-03-15,15:12:36
0,-659,2017-03-15,15:12:37
0,-659,2017-03-15,15:12:37
0,-659,2017-03-15,15:12:37
0,-719,2017-03-15,15:12:38
0,-719,2017-03-15,15:12:38
0,-724,2017-03-15,15:12:38
0,-751,2017-03-15,15:12:39
0,-751,2017-03-15,15:12:39
0,-751,2017-03-15,15:12:39
0,-768,2017-03-15,15:12:40
0,-768,2017-03-15,15:12:40
0,-768,2017-03-15,15:12:40
0,-730,2017-03-15,15:12:41
0,-730,2017-03-15,15:12:41
0,-730,2017-03-15,15:12:41
0,-397,2017-03-15,15:12:42
0,-637,2017-03-15,15:12:42
0,-637,2017-03-15,15:12:42
-1,385,2017-03-15,15:12:43
-1,191,2017-03-15,15:12:43
-1,385,2017-03-15,15:12:43
-1,-720,2017-03-15,15:12:26
0,-799,2017-03-15,15:10:09
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,0, 0-00-00,00:00:00
0,2002,2017-03-15,15:12:44
0,2002,2017-03-15,15:12:44
0,2002,2017-03-15,15:12:44

и ещё время дублируется.

что я делаю не так ? и можно ли в тренде поставить опрос менее, чем в 1 сек ?
Чтобы не дублировались записи поставьте галку "Очистить регистры после экспорта"
30148

Тогда 100 выборок будут записываться на USB одним массивом один раз в 100 сек.
30149
И никаких дублирований или пустых данных не будет!

petera
20.03.2017, 18:01
осваиваю СП307 с архивацией данных на усб. делаю так: тренд, в нём архивация в регистр PSW256, и элемент "Архивация на USB" с чтением из этого регистра.
под модбасу подцеплены два датчика, тягонапоромеры. опрос датчиков раз в 100 мс, тренд выводится с частотой раз в 1 с, чаще не умеет.
Так делать нельзя!
Потому, что архивация в тренде делается не в регистр PSW256!
Регистры PSW256 и PSW258 - адреса кольцевого буфера хранилища для тренда. В тих регистрах нет Ваших данных.
По этому для "Архивация на USB" укажите такие же регистры Modbus, как и для тренда.

По поводу "поставить опрос менее, чем в 1 сек".
Для тренда и для "Архивация на USB" можно так.
Нужно в настройках использовать архивацию - По фронту бита
30151
А в качестве бита PSB3 или PSB6.

petera
20.03.2017, 18:27
И вообще у Вас масло масляное получилось
Если есть тренд, то соответственно уже есть архив, тогда зачем еще один такой же архив делать с помощью "Архивация на USB".
А уж если и регистры хранилища для обоих Вы сделали одинаковыми, то тренд каждую секунду перезаписывает архивные данные архивации на USB. А Архивация на USB тут же перезаписывает архивные данные тренда.
Используйте вместо "Архивация на USB" ф.область с функцией экспорта в CSV. В руководстве СП300 есть готовый пример.

anatolys
22.03.2017, 13:28
спасибо, буду пробовать и осваивать. к сожалению, я несколько отстал в своих знаниях, надо навёрстывать.

галку "очистить записи после экспорта" я ставил, дубляжа стало меньше, но он остался. объясню, почему я сделал через PSW256 - напрямую писать из регистров модбаса оно почему-то не хотело. возможно, потому, что флешка была не пустая - это обнаружилось уже потом, и файловая система была FAT32, не FAT. переформатировал в FAT, стало чисто, пусто и вообще начало писать. сам по себе тренд вырос именно из необходимости архивировать данные на флешку, так он сам по себе не нужен. но, когда я пытался писать напрямую из регистров, ничего не получалось. я попробую тренд убрать и прочее, в соответствие с рекомендациями. спасибо. по результатам отпишусь.

Dmitry-357
22.03.2017, 20:44
Приветствую.
Скажите, стоит задача написания программы, контроллер ПЛК110,
панель СП310-Р.
Заказчик просит еще чтоб была WEB визуализация, есть ли такая возможность у данной панели
или это как то подругому нужно решать?

Евгений Кислов
22.03.2017, 20:47
Приветствую.
Скажите, стоит задача написания программы, контроллер ПЛК110,
панель СП310-Р.
Заказчик просит еще чтоб была WEB визуализация, есть ли такая возможность у данной панели
или это как то подругому нужно решать?

У панелей СП3xx такой возможности нет.

дрю
10.04.2017, 12:29
Добрый день, прошу помощи зала, не удаёться связать панел СП310Р и ПЛК 110-24 32.к.м. В панели нарисовал кнопку . присвоили ей адрес PSB 256, скорость 9600, в ПЛК в конфигурации добавил модуль RS 485_1, универсальный модбайс девайс (NET MODE - TCP, MODYLE SLAVE ADRES - 1, BY POLL TIME) , 8-bit input module (REGISTER adres 256, COMAND - READ COIL STATUS). Внулевом бите этого регистра указал переменную MAO_1_OTK_CP_IN которая должна переключаться в программе по нажатию кнопки на экране и ничего не происходит. Где ошибка не могу найти..3048330483

дрю
10.04.2017, 12:32
Ту проект панели

petera
10.04.2017, 12:59
Добрый день, прошу помощи зала, не удаёться связать панел СП310Р и ПЛК 110-24 32.к.м. В панели нарисовал кнопку . присвоили ей адрес PSB 256, скорость 9600, в ПЛК в конфигурации добавил модуль RS 485_1, универсальный модбайс девайс (NET MODE - TCP, MODYLE SLAVE ADRES - 1, BY POLL TIME) , 8-bit input module (REGISTER adres 256, COMAND - READ COIL STATUS). Внулевом бите этого регистра указал переменную MAO_1_OTK_CP_IN которая должна переключаться в программе по нажатию кнопки на экране и ничего не происходит. Где ошибка не могу найти..3048330483
1. Не понятно по какому интерфейсу будет связь.
Если по RS 485, то зачем для UMD задан ежим работы TCP, должен быть Serial
30488

2. ПЛК в настройках RS 485 задано - нет контроля четности
30485
А в настройках порта панели - есть (Контроль на четность)
30486

3. ПЛК для MAO_1_OTK_CP_IN адрес задан 256
30487
А для переключателя на экране панели почему-то адрес уже PSB300
30489
А должен быть PSB256

дрю
10.04.2017, 13:18
Petera, спасибо. С регистром PSB 300/256 в реальностивсе было правильно это zip. файл был сохранён до того как я изменил его в ПЛК. Заработало сразу как я исправил бит четности и NET MODE выставил SERIAL.

kir2
12.04.2017, 23:22
Проект в составе ПЛК-110(М02)- СП307(слэйв) по RS-485 и быстрые выходы по таймерному прерыванию 25кГц.
В конфигурации на чтение из панели около 30 регистров с числовыми значениями (коды клавиш, уставки).
Реакция на нажатие клавиши СП307 около 3-4 сек, что недопустимо.
На форуме встречал предложения для уменьшения числа элементов для чтения из панели применить "String input module".
Вопрос - как сформировать строку в панели в последовательности регистров (преобразовать числовые значения в ASCII коды
аналогично оператору CoDeSys "word_to_string")? Может существует незадокументированная HMI Api Function для макросов.

petera
13.04.2017, 04:05
Проект в составе ПЛК-110(М02)- СП307(слэйв) по RS-485 и быстрые выходы по таймерному прерыванию 25кГц.
В конфигурации на чтение из панели около 30 регистров с числовыми значениями (коды клавиш, уставки).
Реакция на нажатие клавиши СП307 около 3-4 сек, что недопустимо.
На форуме встречал предложения для уменьшения числа элементов для чтения из панели применить "String input module".
Вопрос - как сформировать строку в панели в последовательности регистров (преобразовать числовые значения в ASCII коды
аналогично оператору CoDeSys "word_to_string")? Может существует незадокументированная HMI Api Function для макросов.
Какой такой "word_to_string"?
Предложенный способ повышения скорости обмена с панелью с использованием в мастере ПЛК модулей String output module/String input module здесь http://www.owen.ru/forum/showthread.php?t=17207&p=141316&viewfull=1#post141316
Смотрите внимательно пример программы для ПЛК
30523
Никаких преобразований числовых значения в ASCII коды здесь нет
А панель вообще не знает о том, что ее регистры читаются какими-то String input module. Т.е. никаких дополнительных телодвижений в проекте для панели делать не требуется, в том числе и преобразовать числовые значения в ASCII коды.

ЗЫ, Т.к. ссылка больше не работает привожу описание способа использования String output /String input модулей
1. Определяем приемлемое количество регистров в одном запросе, у меня в примере будет 16 регистров в одной группе.
Для каждой группы будем использовать ОДИН модуль String
Слишком много в группе делать не стоит.
а) для модуля String есть "магическая" цифра 80 (перманентное число байт в модуле String), по этому если модулей String будет больше одного, то в каждом можно использовать не более 80 байт или 40 регистров. Так получилось, что в реальном распределении памяти адрес каждого последующего модуля String совпадает с адресом 41 регистра предыдущего и все регистры старше 41 будут переписываться информацией из первых регистров последующих модулей.
Больше 40 регистров можно если модуль String всего один.

2.Помещаем String output и String input модули в разные UMD
Для UMD с String output задаем режим работы по изменению значения
48590

В String output используем для записи 16 функцию
48586

3. Смотрим в конфигурации какие адреса получились для модулей String, например AT %QB7.1.0.0 и/или AT %QB7.1.1.0 и/или %QB7.1.2.0 и т.д
48587

4. Создаем в разделе описания переменных нужное количество групп регистров в виде массивов вида Blok1 AT %QB7.1.0.0:ARRAY [0..15] OF WORD
где после AT приводим адреса из конфигурации.
48588

число байт в модуле String д.б. в два раза больше числа регистров в группе
48589

5. В программе обращаемся к элементам массивов
48591


Вот еще один пример - чтение из панели значений Float
30524 30525

kir2
13.04.2017, 10:35
Petera, спасибо за оперативный ответ.
С символьной переменной я связался по причине определения str1 в конфигураторе
30532
которая в результате читалась в ПЛК как str1='', т.е. пустой строкой.
Сегодня же попробую изменить чтение регистров предложенным Вами способом.
Не понял только один момент - почему Вы ограничиваете в указанном примере чтение-запись
в одном канале (переменной) 16-ю регистрами (amount byte=32), ведь максимальное значение
равно 249 байтам и указав (amount byte=40) можно обойтись одним каналом.

И ещё один момент - функция "копировать регистр" из битового PSB в слово PSW
30533
работает при офлайн эмуляции при PSB кратном 8 (как справедливо Вами указано в одном из
Ваших сообщений), а на СП300 приведенная на изображении функция читает значения из
начального адреса, кратного 16 (PSB288) в PSW296.0.???

petera
13.04.2017, 10:54
Petera, спасибо за оперативный ответ.
С символьной переменной я связался по причине определения str1 в конфигураторе
30532
которая в результате читалась в ПЛК как str1='', т.е. пустой строкой.
Сегодня же попробую изменить чтение регистров предложенным Вами способом.
Не понял только один момент - почему Вы ограничиваете в указанном примере чтение-запись
в одном канале (переменной) 16-ю регистрами (amount byte=32), ведь максимальное значение
равно 249 байтам и указав (amount byte=40) можно обойтись одним каналом.

И ещё один момент - функция "копировать регистр" из битового PSB в слово PSW
30533
работает при офлайн эмуляции при PSB кратном 8 (как справедливо Вами указано в одном из
Ваших сообщений), а на СП300 приведенная на изображении функция читает значения из
начального адреса, кратного 16 (PSB288) в PSW296.0.???

Ограничения в 16 регистров нет, это значение у меня только для примера. Кроме того в следующем посте http://www.owen.ru/forum/showthread.php?t=17207&p=176633&viewfull=1#post176633 более подробный ответ, почему в моем примере в группе по 16 регистров.
Однако в реальности 249 байт не получается, для String есть "магическая" цифра 80 (перманентное число байт в модуле String), по этому если модулей String будет больше одного, то можно использовать только 80 байт или 40 регистров, объяснения здесь http://www.owen.ru/forum/showthread.php?t=21799&p=177886&viewfull=1#post177886

По поводу "копировать регистр" из битового PSB в слово PSW.
Не совсем понял Ваш вопрос.
Могу сказать только, что начальный адрес PSB должен быть ОБЯЗАТЕЛЬНО кратным 16. Это будет работать и в эмуляторе и в панели.
Если PSB выбирать кратном 8, то такой вариант правильно работает ТОЛЬКО в эмуляторе. Для реальной панели этот вариант не проходит.

kir2
13.04.2017, 11:54
Petera, в Ваших примерах ссылка в конфигураторе на адресное пространство типа IB7.2.0 (входы).
У меня почему-то QB, хотя вставлен "String input module"
3053630536
Это глюк конфигуратора или в объявлении переменных указывать типа
(Blok1_fromPanel AT %QB6.2.0.0:ARRAY [0..39] OF WORD)?

petera
13.04.2017, 12:07
Petera, в Ваших примерах ссылка в конфигураторе на адресное пространство типа IB7.2.0 (входы).
У меня почему-то QB, хотя вставлен "String input module"
3053630536
Это глюк конфигуратора или в объявлении переменных указывать типа
(Blok1_fromPanel AT %QB6.2.0.0:ARRAY [0..39] OF WORD)?

У меня на скринах - ПЛК160.
Может для ПЛК-110(М02) QB это нормально.
В любом случае в разделе объявления переменных писать нужно то, что видите в конфигурации модуля String
Blok1_fromPanel AT %QB6.2.0.0:ARRAY [0..39] OF WORD

дрю
14.04.2017, 15:53
Ребят была одна проблемы, но после обнаружилась вторая. По первой: в проекте создал ОКНО ТРЕВОГ PSB 260. Создал кнопку с алгоритмом пока нажата PSB 260 = 1, Для контроля к тому же биту прикрутил лампочку. В эмуляторе нажимаю кнопку пояаляеться ранее созданное ОКНО ТРЕВОГ. Квитирую окно кнопкой OK в нём а оно не исчезает, хотя PSB 260=0 (сужу по индикаторной лампе на панели). В настройках вызов окна выбран 1 раз. Пробовал на реальной панели, картина таже самая.
И вторая проблема,она скорее связана с неисправностью самой панели, элименты на экране после 3 минут работы проподают при касании пальцем любой области, если экрана не касаться то они будут видны, потом снова появляються.

Евгений Кислов
14.04.2017, 15:55
Ребят была одна проблемы, но после обнаружилась вторая. По первой: в проекте создал ОКНО ТРЕВОГ PSB 260. Создал кнопку с алгоритмом пока нажата PSB 260 = 1, Для контроля к тому же биту прикрутил лампочку. В эмуляторе нажимаю кнопку пояаляеться ранее созданное ОКНО ТРЕВОГ. Квитирую окно кнопкой OK в нём а оно не исчезает, хотя PSB 260=0 (сужу по индикаторной лампе на панели). В настройках вызов окна выбран 1 раз. Пробовал на реальной панели, картина таже самая.
И вторая проблема,она скорее связана с неисправностью самой панели, элименты на экране после 3 минут работы проподают при касании пальцем любой области, если экрана не касаться то они будут видны, потом снова появляються.

1. У вас в окне тревог на кнопку ОК привязана функция Открыть окно. Исправьте на Закрыть окно.
2. Попробуйте в настройках проекта для параметра Интервал поставить "Нет заставки" (сейчас у вас там как раз 3 минуты) - возможно, проблема в этом.

30567

дрю
14.04.2017, 16:02
Спасибо, не знал что кнопка отдельно настраиваемый элимент. С второй проблемой не решилось. поеду в понидельник в техподдержку

дрю
14.04.2017, 16:20
С ичезновением элиментов тоже разобрался. Меню ФАИЛ_вкладка_ОБЩИЕ_ Заставка нужно выбрать НИКОГДА. Тогда ничего не исчезает, пока..

дрю
17.04.2017, 16:41
Подскажите, а есть ли возможность использовать в качестве аналогового дисплея ну хотябы из КДС 3.5 или ещё какии нибудь, уж больно варианты которые предлогает конфигуратор СП300 скромные, хоть вообще не используй их...

Евгений Кислов
17.04.2017, 20:23
Подскажите, а есть ли возможность использовать в качестве аналогового дисплея ну хотябы из КДС 3.5 или ещё какии нибудь, уж больно варианты которые предлогает конфигуратор СП300 скромные, хоть вообще не используй их...

К сожалению, нет.

дрю
19.04.2017, 10:45
Подскажите, пожалуста, если я использую регистр PFW (энергонезависимый) чтобы сохранить уставку температуры которая будет передоваться в ПЛК при помоши ЦИФРОВОЙ ВВОД на панели СП 300,Какой подэлимент мне необходимо добавит в Universal Modbus device в КОНФИГУРАЦИИ ПЛК чтобы ПЛК его прочел ?

petera
19.04.2017, 11:52
Подскажите, пожалуста, если я использую регистр PFW (энергонезависимый) чтобы сохранить уставку температуры которая будет передоваться в ПЛК при помоши ЦИФРОВОЙ ВВОД на панели СП 300,Какой подэлимент мне необходимо добавит в Universal Modbus device в КОНФИГУРАЦИИ ПЛК чтобы ПЛК его прочел ?

Real input module
30675

Только не забывайте, что в настройках UMD нужно для параметра Byte Sequence установить значение "Native"
30676

v.agoshkin
19.04.2017, 15:04
Всем добрый день!
Начал воевать с макросами, а точнее с операциями связанные с битами регистров. Делаю такую запись и все работает (управление первым битом регистра PSW320)
if(PSW[320]&0x01)
{
PSW[318]=PSW[318]&~(1<<0);
PSW[318]=PSW[318]&~(1<<1);
}
Далее делаю так не работает(управление 2 битом PSW320)
if(PSW[320]&0x02)
{
PSW[318]=PSW[318]&~(1<<0);
PSW[318]=PSW[318]&~(1<<1);
}
вношу небольшое изменение знаком "~"
if(PSW[320]&~0x02)
{
PSW[318]=PSW[318]&~(1<<0);
PSW[318]=PSW[318]&~(1<<1);
}
Так вот встает вопрос как мне точно обращаться к биту регистра в условии. Где можно посмотреть точный синтаксис. Может есть какое исправленное описание. А то ошибки хелпера сильно утомляют)

Евгений Кислов
19.04.2017, 15:29
Всем добрый день!
Начал воевать с макросами, а точнее с операциями связанные с битами регистров. Делаю такую запись и все работает (управление первым битом регистра PSW320)
if(PSW[320]&0x01)
{
PSW[318]=PSW[318]&~(1<<0);
PSW[318]=PSW[318]&~(1<<1);
}
Далее делаю так не работает(управление 2 битом PSW320)
if(PSW[320]&0x02)
{
PSW[318]=PSW[318]&~(1<<0);
PSW[318]=PSW[318]&~(1<<1);
}
вношу небольшое изменение знаком "~"
if(PSW[320]&~0x02)
{
PSW[318]=PSW[318]&~(1<<0);
PSW[318]=PSW[318]&~(1<<1);
}
Так вот встает вопрос как мне точно обращаться к биту регистра в условии. Где можно посмотреть точный синтаксис. Может есть какое исправленное описание. А то ошибки хелпера сильно утомляют)

Добрый день. Исправленное описание:

30677

30678

Также можно воспользоваться примером:
http://www.owen.ru/uploads/example_macromemory.zip

В нем подготовлены функции GetBitFromReg и WriteBitInReg.



А то ошибки хелпера сильно утомляют)

Если встречались еще ошибки, кроме упомянутой - напишите, пожалуйста, мне на почту.

Минеев Антон
20.04.2017, 09:41
Добрый день, Подскажите плиз по работе с таблицами на СП307-Б. Создаю таблицу вывода данных 3 строки. Данные DWord. 306853068730688
Если ставлю "Циклические данные", то данные вообще не обновляются, если убираю, то меняется только в верхней строке. Кроме того если ставлю 2 столбец данных времени, то он вообще не отоброжается. Что делаю не так?

Евгений Кислов
20.04.2017, 09:48
Добрый день, Подскажите плиз по работе с таблицами на СП307-Б. Создаю таблицу вывода данных 3 строки. Данные DWord. 306853068730688
Если ставлю "Циклические данные", то данные вообще не обновляются, если убираю, то меняется только в верхней строке. Кроме того если ставлю 2 столбец данных времени, то он вообще не отоброжается. Что делаю не так?

Добрый день. Галочка "Циклические данные" нужна, если, например, таблица отображает данные тренда или архива (у которых в настройках есть аналогичная галочка).

В вашем случае галочку нужно снять и добавить еще два цифровых элемента ввода - PSW302 и PSW304.

Иными словами, таблица занимает следующие регистры:
1 строка - PSW300-PSW301 (DWORD/Float)
2 строка - PSW302-PSW303 (DWORD/Float)
3 строка - PSW304-PSW305 (DWORD/Float)

Можете также посмотреть этот пример:
http://www.owen.ru/uploads/sp307_tables.zip

v.agoshkin
20.04.2017, 10:04
То есть ели я хочу обратится к допустим к третьему биту будет запись
if((PSW[320]&(1<<3))==0x10) // PSW320.3
{
ResetPSB(300);
}

Евгений Кислов
20.04.2017, 10:13
Не совсем.



if((PSW[320]&(1<<3))==0x08) // если PSW320.3=TRUE
{
ResetPSB(300); // то PSB300:=FALSE
}


Напомню, нумерация бит с нулевого в панели.

0x08 - это 0000_0000_0000_1000 в двоичной системе.

v.agoshkin
20.04.2017, 10:21
Насчет нумерации битов в курсе. Сразу прошу извинения за глупый вопрос, но только начинаю разбираться, что это за значение 0x08 и по какому принципу выбирается?

v.agoshkin
20.04.2017, 10:35
Хотя вопрос снимается, уже разобрался.

дрю
20.04.2017, 10:36
Добрый день, Вчера задавал вопрос на предмет какой использовать элимент для чтения энергонезависимых переменных, выполнил рекомендации РЕТЕРА но не получилось, вот настройка модуля30692, Скрин панели СП310 3069330693, скрин онлайн режима ПЛК 30694. Подскажите что не так, прилагаю пробный проект панели и плк.

Евгений Кислов
20.04.2017, 10:39
Открываете калькулятор, режим Программист.
Предположим, вы хотите проверить 7-ой бит (т.е. PSW300.7, например - и надо помнить что все начинается с PSW300.0).

В калькуляторе выставляете этот бит в 1 и смотрите на значение (удобнее в HEX) - его и надо записать в макросе (в виде 0x80):

30696

Евгений Кислов
20.04.2017, 10:43
Добрый день, Вчера задавал вопрос на предмет какой использовать элимент для чтения энергонезависимых переменных, выполнил рекомендации РЕТЕРА но не получилось, вот настройка модуля30692, Скрин панели СП310 3069330693, скрин онлайн режима ПЛК 30694. Подскажите что не так, прилагаю пробный проект панели и плк.

В ПЛК надо указывать не прямые адреса PFW (256, 258, 260), а со смещением в 10000 (10256, 10258, 10260).

дрю
20.04.2017, 11:04
С WORDOM и FLOAT получилось панель:30698, ПЛК 30699, а вот с битами ни как? Проект с исправлениями прилагаю. Спасибо

Евгений Кислов
20.04.2017, 11:16
С WORDOM и FLOAT получилось панель:30698, ПЛК 30699, а вот с битами ни как? Проект с исправлениями прилагаю. Спасибо

Попробуйте для 8 bit input module использовать функцию Read Holding Registers.

дрю
20.04.2017, 11:26
УРА! Заработало,СПАСИБО!

Минеев Антон
20.04.2017, 11:39
Добрый день. Галочка "Циклические данные" нужна, если, например, таблица отображает данные тренда или архива (у которых в настройках есть аналогичная галочка).

В вашем случае галочку нужно снять и добавить еще два цифровых элемента ввода - PSW302 и PSW304.

Иными словами, таблица занимает следующие регистры:
1 строка - PSW300-PSW301 (DWORD/Float)
2 строка - PSW302-PSW303 (DWORD/Float)
3 строка - PSW304-PSW305 (DWORD/Float)

Можете также посмотреть этот пример:
http://www.owen.ru/uploads/sp307_tables.zip

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

Евгений Кислов
20.04.2017, 12:31
Прошу прощения, я может быть задам глупый вопрос... А где их добавлять? Там на первой вкладке больше 1 регистра не введешь... И по примеру у меня все теже настройки...

Речь не о настройках, а о элементах типа Цифровой ввод. Прикладываю пример.

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

Минеев Антон
20.04.2017, 13:45
Речь не о настройках, а о элементах типа Цифровой ввод. Прикладываю пример.

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

Ок, все в примере рабочее... В РП ничего по этому поводу не нашел, так же как и не понял, как этот выбор строки реализован в примере. Удилил все, кроме таблицы - и все равно все 3 строки пишутся... Как?

Да, забыл сказать, у меня панель на Slave...

Евгений Кислов
20.04.2017, 13:54
Давайте начнем с начала.

Таблица - это элемент, которые отображает значения регистров.

В таблице вы указываете PSW300 - это первый регистр, начиная с которого расположены данные, отображаемые таблицей (при отсутствии галочки Цикл. буфер).

Таблица содержит один столбец с данными типа DWORD и три строки. Каждая переменная DWORD занимает два регистра.

Т.е. таблица занимает 1 столбец*3 строки*2 регистра=6 регистров, расположенных с PSW300. Т.е. - от PSW300 до PSW305.

Соответственно, чтобы менять содержимое таблицы, необходимо менять значения этих регистров.

1 строка - регистры PSW300-301 (в элементе Цифровой ввод выбираем тип DWORD и первый из двух регистров - PSW300)
2 строка - регистры PSW302-303 (Цифровой ввод - DWORD - PSW302)
3 строка - регистры PSW304-305 (Цифровой ввод - DWORD - PSW304)

С помощью элементов типа DWORD мы меняем значения регистров и видим соответствующие изменения в таблице (поскольку таблица как раз эти регистры и отображает).

Минеев Антон
20.04.2017, 14:40
Давайте начнем с начала.

Таблица - это элемент, которые отображает значения регистров.

В таблице вы указываете PSW300 - это первый регистр, начиная с которого расположены данные, отображаемые таблицей (при отсутствии галочки Цикл. буфер).

Таблица содержит один столбец с данными типа DWORD и три строки. Каждая переменная DWORD занимает два регистра.

Т.е. таблица занимает 1 столбец*3 строки*2 регистра=6 регистров, расположенных с PSW300. Т.е. - от PSW300 до PSW305.

Соответственно, чтобы менять содержимое таблицы, необходимо менять значения этих регистров.

1 строка - регистры PSW300-301 (в элементе Цифровой ввод выбираем тип DWORD и первый из двух регистров - PSW300)
2 строка - регистры PSW302-303 (Цифровой ввод - DWORD - PSW302)
3 строка - регистры PSW304-305 (Цифровой ввод - DWORD - PSW304)

С помощью элементов типа DWORD мы меняем значения регистров и видим соответствующие изменения в таблице (поскольку таблица как раз эти регистры и отображает).

Ок, врубился, пасибо...

дрю
20.04.2017, 16:43
Ещё вопрос, ПЛК отсылает в панель 2 бит регтстра PSB 26430720, в панели взят элимент ДВИГАТЕЛЬ которому присвоил тот же регистр PSB 264 30721. Как обратиться к нужному биту этого PSB регистра в панели, или это только возможно если использовать регистры PSW?

Евгений Кислов
20.04.2017, 17:29
PSB - это бит, аналог BOOL из CoDeSys.

В вашем случае, вероятно, произойдет запись в PSB266 - его и надо привязать к двигателю.

Вообще, по-моему, проще использовать в ПЛК Register Input/Output Module и читать/записывать битовые маски в PSW.

Ну и обращу внимание, что у нас есть примеры по настройке обмена с ПЛК:
http://www.owen.ru/upl_files/PO/SP300CODESYS2.3_v1.1.zip

SokolovS
20.04.2017, 19:45
Открываете калькулятор, режим Программист.
Предположим, вы хотите проверить 7-ой бит (т.е. PSW300.7, например - и надо помнить что все начинается с PSW300.0).

В калькуляторе выставляете этот бит в 1 и смотрите на значение (удобнее в HEX) - его и надо записать в макросе (в виде 0x80):

30696
Кстати, давно хотел спросить
Зачем в одной строке используется два разных подхода к получению одной и той же константы?
1<<3 даст тот же результат, что и 0x08, но его посчитает компилятор и гораздо удобнее менять в коде
Более того, зачем проверяется равенство этой константе, а не неравенство нулю? Код ниже даст тот же результат, что и исходный


Код:

if((PSW[320]&(1<<3))!=0) // если PSW320.3=TRUE
{
ResetPSB(300); // то PSB300:=FALSE
}

Евгений Кислов
20.04.2017, 19:51
Справедливо - поправлю на вариант с проверкой неравенства нулю. Спасибо за замечание.

дрю
21.04.2017, 09:25
В продолжении разговора об обращении к битовой области. Я понимаю что PSB ,например, 256 это 1бит. Меня смутило что в конфирурации ПЛК есть возможность обратиться и к остальным битам30736 и вот в ОНЛАЙНЕ пример обращения 30737. А так да, использую PSW регистр с возможность выбрать 8 из 16 битов для работы.
Пример по организации связи ПЛК-ПАНЕЛЬ я смотрел ранее, жаль там нет примера конфигурации ПЛК чтобы знать какой модуль использовать и какую команду. Я уже этот этап прошёл но такой пример снял бы не мало вопросов для быстрого понимания работы связки ПЛК_ПАНЕЛЬ.

Евгений Кислов
21.04.2017, 09:27
Пример по организации связи ПЛК-ПАНЕЛЬ я смотрел ранее, жаль там нет примера конфигурации ПЛК чтобы знать какой модуль использовать и какую команду

В смысле, нет? Там скриншоты для конфигурации каждого модуля, с адресами, функциями и т.д.

дрю
21.04.2017, 10:00
Я имел в виду в самом КДС проекте который прилагаеться к PDF

Евгений Кислов
21.04.2017, 10:09
Я имел в виду в самом КДС проекте который прилагаеться к PDF

Возможно, не понял вопрос - но в прилагаем КДС проекте конфигурация настроена же.

дрю
21.04.2017, 10:34
Вот открыл проект 30739,30740,30741

Евгений Кислов
21.04.2017, 10:38
Вот открыл проект 30739,30740,30741

У вас не установлен таргет, для которого создан проект. Версия таргета в прилагаемом документе указана - 3.08.
http://www.owen.ru/uploads/txtlic.php?url=/uploads/3.08.rar

дрю
21.04.2017, 11:18
Извиняюсь за не внимательность, ткните пожалуста где указан необходимый таргет

Евгений Кислов
21.04.2017, 11:22
Извиняюсь за не внимательность, ткните пожалуста где указан необходимый таргет

В самом начале - в разделе 1 каждого описания примера:

30742

ks-app
21.04.2017, 12:34
Здравствуйте.
Что то не нашёл ни в документации, ни на форуме.
Можно ли как-то в панели СП307/310 отключить звук при нажатиях на экран?

Евгений Кислов
21.04.2017, 12:37
Здравствуйте.
Что то не нашёл ни в документации, ни на форуме.
Можно ли как-то в панели СП307/310 отключить звук при нажатиях на экран?

Добрый день. Да, можно. См. п. 2.1 в FAQ:
http://www.owen.ru/catalog/sensornie_paneli_operatora_oven_sp3xx/81265010

Эдуард_Н
21.04.2017, 13:45
А диск с ПО, FAQ и т.п. к панели существует?

Евгений Кислов
21.04.2017, 13:59
А диск с ПО, FAQ и т.п. к панели существует?

Диск входит в комплект поставки. FAQ на него не включали.
Образ диска выложим на сайт при его следующем обновлении.

дрю
21.04.2017, 14:51
Спасибо увидил!

maks
22.04.2017, 12:18
Не могу загрузить проект в СП310Р через USB система видит подключение30753
но проект не загружается в итоге
30754
кабель рабочий(через него подключаю и ПЛК)

пож. нужна помощ, как можно скорее....

ks-app
25.04.2017, 08:36
Или я уже заработался и не вижу очевидных ошибок, или что-то не то с оборудованием.
Вопрос по панели СП307 - связь с ПЛК 110 через модбас РТУ. ПЛК - мастер.
Передача данных в панель идёт нормально.
Но из панели какая-то аномалия. К примеру, есть регистр в панели PSW300. В ПЛК пытаюсь читать его через Register Input Module. И даже что-то читается. Но как-то странно. Например, значения 1, 2, 6 читаются. А 3, 4 и 5 - нет.
В чём может быть проблема?

Евгений Кислов
25.04.2017, 08:53
Или я уже заработался и не вижу очевидных ошибок, или что-то не то с оборудованием.
Вопрос по панели СП307 - связь с ПЛК 110 через модбас РТУ. ПЛК - мастер.
Передача данных в панель идёт нормально.
Но из панели какая-то аномалия. К примеру, есть регистр в панели PSW300. В ПЛК пытаюсь читать его через Register Input Module. И даже что-то читается. Но как-то странно. Например, значения 1, 2, 6 читаются. А 3, 4 и 5 - нет.
В чём может быть проблема?

Выложите проекты для обоих устройств, пожалуйста.

ks-app
25.04.2017, 08:58
Спасибо. Я уже разобрался.
Проблема была в том, что в ПЛК не было контроля чётности, а в панели был установлен контроль чётности. Правда странно, что передача в панель при этом нормально работала.

Sashakkk
25.04.2017, 12:58
Здравствуйте. Как в конфигураторе СП300 включить "Пользовательский режим" (он же Расширенный)?

Евгений Кислов
25.04.2017, 13:15
Здравствуйте. Как в конфигураторе СП300 включить "Пользовательский режим" (он же Расширенный)?

Добрый день. Такого режима не предусмотрено.

Sashakkk
25.04.2017, 13:20
Жаль. А если писать программу в конфигураторе СП200 с использованием "Пользовательского режима" зальётся ли она в СП307 без проблем?

Евгений Кислов
25.04.2017, 13:21
Жаль. А если писать программу в конфигураторе СП200 с использованием "Пользовательского режима" зальётся ли она в СП307 без проблем?

В большинстве случаев - возникнут проблемы.

Минеев Антон
25.04.2017, 15:20
Здравствуйте, продолжу вопрос по таблицам... Такое дело: нужно выводить показания каждый час с выводом времени фиксации - Все это свести в 1 таблицу. Если ставлю 1 столб данных, то все замечательно, как добавляю второй с временем - в таблице время не отображается и показания снова оказываются только на верхней строке. Я так понимаю, что нужно использовать формат 32 Bit, но как?

Евгений Кислов
25.04.2017, 15:49
Вот раскладка регистров по столбцам таблицы на вашем примере.
Пусть начальный регистр таблицы - PSW300. Тогда:



Float
DateTime (год-месяц-день часы:минуты:секунды)


PSW300-301
PSW302-307


PSW308-309
PSW310-PSW315


PSW316-317
PSW318-PSW323

Минеев Антон
25.04.2017, 16:14
Вот раскладка регистров по столбцам таблицы на вашем примере.
Пусть начальный регистр таблицы - PSW300. Тогда:



Float
DateTime (год-месяц-день часы:минуты:секунды)


PSW300-301
PSW302-307


PSW308-309
PSW310-PSW315


PSW316-317
PSW318-PSW323



Да, это понятно, но как в эти 302-307 записать данные в ПЛК? И желательно с записью системного времени ПЛК...

Евгений Кислов
25.04.2017, 16:24
Если ПЛК - мастер, то просто записываете из него в эти регистры разряды времени, упакованные в HEX:

PSW302<-----16#2017
PSW303<-----16#04
PSW304<-----16#25
и т.д.

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

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

Минеев Антон
26.04.2017, 07:15
Ок, с этим понятно, теперь вопрос, таблица 16 строк, начало с 0... Пропускает чтение с 5, 6, 7 и 15 строки - пишет 0, хотя в контроллере в эти регистры значение записыватся. По перекрестным ссылкам никак ложных записей в них нет...

Евгений Кислов
26.04.2017, 08:55
Ок, с этим понятно, теперь вопрос, таблица 16 строк, начало с 0... Пропускает чтение с 5, 6, 7 и 15 строки - пишет 0, хотя в контроллере в эти регистры значение записыватся. По перекрестным ссылкам никак ложных записей в них нет...

Напишите нам на support@owen.ru
К письму приложите проекты для обоих устройств.

Dias2004
03.05.2017, 12:56
Здравствуйте,
прошу помочь решить проблему передачи DWORD из контроллера в панель через Modbus.
При передаче через RS-485 с параметрами по умолчанию при передаче DWORD из ПЛК панель при приёме в цифровой дисплей типа DWORD переворачивает слова (при передаче 16#FFFF1111 на панели отображается 1111FFFF).
Попробовал в контроллере в параметрах RS485 заменить Frame Oriented: RTU на ASCII - числа на панели вообще перестали отображаться. Мне нужно передать 4-х байтное число без искажения, как изменить порядок вывода слов DWORD в панели, или каким-то другим способом решить проблему?
Программно менять местами слова в контроллере пока не хочу, мне кажется что должен быть более простой метод решения. :)

Евгений Кислов
03.05.2017, 13:10
Здравствуйте,
прошу помочь решить проблему передачи DWORD из контроллера в панель через Modbus.
При передаче через RS-485 с параметрами по умолчанию при передаче DWORD из ПЛК панель при приёме в цифровой дисплей типа DWORD переворачивает слова (при передаче 16#FFFF1111 на панели отображается 1111FFFF).
Попробовал в контроллере в параметрах RS485 заменить Frame Oriented: RTU на ASCII - числа на панели вообще перестали отображаться. Мне нужно передать 4-х байтное число без искажения, как изменить порядок вывода слов DWORD в панели, или каким-то другим способом решить проблему?
Программно менять местами слова в контроллере пока не хочу, мне кажется что должен быть более простой метод решения. :)

Добрый день. Попробуйте в ПЛК для параметра Byte Sequence выбрать значение Native.

30910

Dias2004
03.05.2017, 13:28
!!! А где расположено место настройки этого !!! параметра?

Евгений Кислов
03.05.2017, 13:31
!!! А где расположено место настройки этого !!! параметра?

В модуле Universal Modbus Device:

30911

SokolovS
03.05.2017, 13:56
Проект разрабатывался без панели, в эмуляторе всё хорошо
Но на месте выяснилось, что проект заставляет панель только показывать микросхему
Удалось найти элемент, который вызывает такое поведение, и обойтись без него
Пустой проект с одним элементом, вызывающий такое поведение, в приложении. Самому экспериментировать возможности не было.
Таблица используется только как графический элемент, поэтому тип данных стоит ТЕХТ и длина 0

Евгений Кислов
03.05.2017, 14:13
Справедливо, нулевая длина текста - некорректное и необрабатываемое значение. По идее, конечно, здесь должно было бы появиться окно с предупреждением "Значение не может быть нулевым!" или что-то подобное.

Но в вашем случае достаточно указать любую длину текста (например, 1) - все равно по умолчанию будет отображаться пустая строка, и ваша концепция ("Таблица используется только как графический элемент") будет соблюдена.

Evlord
04.05.2017, 11:03
как произвести масштабирование исторического графика по оси времени или значений? как вывести подписи оси значений на историческом графике?

Евгений Кислов
04.05.2017, 11:32
как произвести масштабирование исторического графика по оси времени или значений? как вывести подписи оси значений на историческом графике?

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

Evlord
04.05.2017, 12:03
Подобный функционал не предусмотрен. Используйте элемент Тренд - для него все перечисленное доступно.

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

Евгений Кислов
04.05.2017, 12:07
Тогда как просмотреть тренды данного элемента с частотой записи в 2 секунды, например, за неделю, учитывая ограниченность записей регистров и невозможности сохранения записи в энергонезависимой памяти?

Разместите тренд в авто. области (вкладка Регистр элемента) - она предназначена как раз для таких случаев (энергонезависимая, кол-во регистров - ~4 млн.).

Evlord
04.05.2017, 14:26
как сделать отображение времени линии данных в историческом графике помимо отображения данных?

Евгений Кислов
04.05.2017, 15:20
как сделать отображение времени линии данных в историческом графике помимо отображения данных?

Вы имеете в виду подобие курсора для среза? К сожалению, подобный функционал для тренда не предусмотрен.

Иван Чернецкий
12.05.2017, 09:58
Добрый день, petera, добрый день, коллеги!
Petera, сделал все по Вашему предложению http://www.owen.ru/forum/showthread.php?t=23024&p=247211&viewfull=1#post247211
Вот теперь все работает как надо. Только показалось, что работать стало медленнее. Вычисление динамического адреса требует бОльшего времени? А ведь в примере элементов всего 3. А если их будет 30?

Далее осталась проблема с отображением битовых элементов, как у mick213: http://www.owen.ru/forum/showthread.php?t=23024&p=222133&viewfull=1#post222133


Сообщение от mick213
Добрый день petera ! Сделал в своем проекте для панели СП310-Б(Master) и 6-ти ПЛК110-60(Slave) ModBus RTU отключение с опроса временно выключенных контроллеров как в примере ”Управление обменом или как ОТКЛ/ВКЛ связь по Modbus”. Сначала не заработало. Выяснилось, что функциональная область, почему-то не записывает в PFW130 значение 400. Пришлось заменить условие запуска “После загрузки проекта” на “Переход на экран элемента”. Получилось включать и отключать опрос контроллера, но возникла другая проблема. На другом экране в исторической таблице все записи, относящиеся к отключенному контроллеру, много раз в минуту формируют сообщения по переднему фронту. Также на экране с индикаторами отключенного контроллера все индикаторы находятся в значении “1” и периодически кратковременно (доли секунды) переходят в “0”. Что может приводить к такому эффекту и как от этого избавиться?

При отключении битового элемента он отображается в состоянии "1" - включено - что не есть хорошо.
Ваше решение:

2. А вот, что касается остального, то действительно здесь наблюдается описанный "глюк". Причем только для битовых сигналов.
Предлагаю для решения этой проблемы использовать промежуточные регистры PSW.
Т.е. поставить в соответствие битам регистров 4х в ПЛК биты промежуточных регистров PSW панели.
Например
4х0 --> PSW256
4х1 --> PSW257
4х2 --> PSW258
.........
4х9 --> PSW265
и т.д.

Если Вы использовали для ламп, переключателей с индикацией или в исторической таблице биты 0х ПЛК, то их номера всегда можно представить в виде отдельных разрядов регистров 4х. Например 0х1 соответствует 4х0.01, а 0х31 соответствует 4х1.15.

решило проблему, но! (в который раз но!) - существенно увеличилось время реакции на отображение состояния элемента. Аж до нескольких секунд. И на время переключения экранов тоже. Функц. обл. с пересылкой байтов тоже требует время? И это только один битовый элемент в примере!

Резюмируя все эксперименты, мое мнение - функция управления обменом - полезная, актуальная. В данной реализации вполне работоспособна с особенностями, описанными в теме. Недостатки - обязательная динамическая адресация всех отображаемых элементов, для битовых каналов - доп. функц. область с дополнительной пересылкой байтов - и все это лишь для корректного отображения информации. А это время. Ну а остальное покажет работа. Интересно узнать мнение других пользователей, а так же инженеров ОВЕН. Функция то не документирована, о PFW130 в официальных документах - ни слова.
Спасибо всем, кто откликнулся.
Вся тема тут: http://www.owen.ru/forum/showthread.php?t=23024

petera
12.05.2017, 10:55
Добрый день, petera, добрый день, коллеги!
Petera, сделал все по Вашему предложению http://www.owen.ru/forum/showthread.php?t=23024&p=247211&viewfull=1#post247211
Вот теперь все работает как надо. Только показалось, что работать стало медленнее. Вычисление динамического адреса требует бОльшего времени? А ведь в примере элементов всего 3. А если их будет 30?

Далее осталась проблема с отображением битовых элементов, как у mick213: http://www.owen.ru/forum/showthread.php?t=23024&p=222133&viewfull=1#post222133


При отключении битового элемента он отображается в состоянии "1" - включено - что не есть хорошо.
Ваше решение:


решило проблему, но! (в который раз но!) - существенно увеличилось время реакции на отображение состояния элемента. Аж до нескольких секунд. И на время переключения экранов тоже. Функц. обл. с пересылкой байтов тоже требует время? И это только один битовый элемент в примере!


1. Во всех Ваших примерах используется скорость обмена 9600, почему? Делайте 115200.

2.
Только показалось, что работать стало медленнее. Вычисление динамического адреса требует бОльшего времени? А ведь в примере элементов всего 3. А если их будет 30?
Надеюсь, что в качестве индексного регистра Вы не используете регистры слейва? Нужно всегда использовать регистр PSW, а не 4х.
По поводу если их будет не 3, а тридцать нужно использовать копирование всех регистров слейва в промежуточные PSW, как здесь http://www.owen.ru/forum/showthread.php?t=23024&p=222908&viewfull=1#post222908
Для каждого слейва отдельной функцией копировать весь блок регистров 4х и сразу задействовать дин.адресацию.
31082

3. Тормоза с битовыми элементами.
А Вы точно используете дин.адрес для регистра, а не для бита?
31083

Выкладывайте проект с "тормозами", хочу посмотреть в чем дело.

petera
12.05.2017, 12:13
Решил проверить как повлияет на скорость обмена использование дин.адресации в функции копирования блока регистров.
За основу взял этот пример http://www.owen.ru/forum/showthread.php?t=23024&p=222908&viewfull=1#post222908
Изменения в проекте

1. Из кнопки управления обменом убрал ф. открытия/закрытия окна №60006
31087

2. В ф. копирования блока из 10 регистров включил дин. адресацию
31088
3. Добавил функцию, которая непрерывно отсылает в ПЛК время работы панели(PSW38) которое увеличивается каждые 0,1 сек.
31089

Теперь время работы панели посылается в рег.4х4, считывается обратно в другой ф.области в составе блока из 10 регистров и отображается на этом дисплее
31090

3. Сделал маленькую программу для ПЛК
31091
в которой тоже есть счетчик, который инкрементируется каждые 0,1 сек. Результат отображается на этом дисплее
31092

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

Теперь попробую увеличить количество слейвов до трех

Иван Чернецкий
12.05.2017, 12:30
Со скоростью согласен. Уже поменял.
Однако на тормозах не отразилось. Битовый канал реагирует на вкл/откл несколько секунд. И с переключением экранов стал подтормаживать. Насчет не 3 а 30 - я имел ввиду именно скорость отображения, не будет она в 10 раз медленнее?
Скрины не делаю, вот файл
31095

petera
12.05.2017, 12:39
Со скоростью согласен. Уже поменял.
Однако на тормозах не отразилось. Битовый канал реагирует на вкл/откл несколько секунд. И с переключением экранов стал подтормаживать. Насчет не 3 а 30 - я имел ввиду именно скорость отображения, не будет она в 10 раз медленнее?
Скрины не делаю, вот файл
31095

Дин. адресацию для битовых элементов нужно делать не здесь
31096
а в функции копирования 4х в промежуточные PSW
31097

т.е. так
31098

Зы
Загрузил в панель, с указанными изменениям. Тормозов нет, экраны переключаются мгновенно.

petera
12.05.2017, 13:09
Для теста быстродействия в Ваш проект добавил элементы ввода.
31102
И т.к. слейвы у меня в ПЛК,
31103
то адреса регистров изменил, а то набирать в конфигураторе по 100 и по 2900 регистров как-то не по себе:rolleyes:

petera
12.05.2017, 14:12
В пример из поста #481 добавил два слейва
31104

31106

31105

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

На глаз тормозов не вижу

Иван Чернецкий
12.05.2017, 14:18
Для теста быстродействия в Ваш проект добавил элементы ввода.
Что то я не совсем понял смысл эл. ввода: с них записать в слэйв и сразу считать в панель? Так у меня так не получится, у меня везде входные регистры, только чтение.
А вот здесь -

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

Загрузил в панель, с указанными изменениям. Тормозов нет, экраны переключаются мгновенно.
Мгновенно - это как? у меня экран переключается около сек., время от включения тумблера (у меня макет) на входе МВ110-32 (битовый канал) до включения лампочки на панели - примерно тоже секунда. Время немножко рознится - 1-2 сек. Это нормально? Просто честно, не знаю. Может это мгновенно?

petera
12.05.2017, 14:42
Мгновенно - это как? у меня экран переключается около сек., время от включения тумблера (у меня макет) на входе МВ110-32 (битовый канал) до включения лампочки на панели - примерно тоже секунда. Время немножко рознится - 1-2 сек. Это нормально? Просто честно, не знаю. Может это мгновенно?

Как и на писано - тыц на кнопку и мгновенно другой экран:) Ни каких секунд.

Что то я не совсем понял смысл эл. ввода: с них записать в слэйв и сразу считать в панель? Так у меня так не получится, у меня везде входные регистры, только чтение.
Только чтение - это у Вас, а у меня все слейвы в ПЛК, могу читать и писать.
А элементы ввода мне нужны, чтобы оценить время реакции панели. Нажал на ввод, ввел значения, нажал Enter и тут же на соседнем дисплее получил ответ от слейва, тоже мгновенно:)

ЗЫ
У меня время задержки ответа у слейвов - 0
31109
Если я здесь укажу 5000,
31110
то мгновенно превратится в 5 сек:rolleyes: Причем это относится и к времени перехода между экранами.

Короче, ищите в настройках слейвов параметр "задержка ответа" и ставьте ее в ноль.

Иван Чернецкий
12.05.2017, 14:44
Petera, я так быстро, как Вы, работать с примерами еще не умею, с панелями только начинаю работать, да и опыта маловато. Учусь только.
Вот загружен у меня сейчас в панель мой последний пример,
31108
исправленный после всех Ваших замечаний. К ней три слейва - два мв110 и один ПР200, от каждого по каналу в панель, и я вижу: переключение экранов - около сек, реакция от тумблера до индикатора на панели - 1-2-3 сек. Всего три элемента индикации. Все в живую, никаких эмуляторов. Если это нормально - вопрос снят.

petera
12.05.2017, 15:18
Поместите на экран, дисплеи с PSW70, 71, 72 и 73
31111
и понаблюдайте за обменом
дисплеи можно сделать глобальными.
может у Вас постоянные ошибки, например по CRC.
Ведь при наличии ошибок панель пытается делать это количество повторных попыток
31112
Например, три попытки. После чего будет окно о потери связи.
Тайм-аут по умолчанию -1 сек. Так, что повторные запросы при ошибках тайм-аута будут не чаще чем через 1 сек.

ЗЫ.
В дополнение к выше сказанному.
Может Ваши слейвы, те же МВ110 не успевают выполнять команды и еще не готовы к приему следующей посылки от панели, из-за этого тоже будут ошибки связи.
Ведь если здесь стоит 0
31113
то панель "пуляет" запросы к слейвам с максимально возможной частотой, может для МВ110 или ПР нужно не менее, например, 10мс между запросами? А они, к примеру, приходят от панели каждые 5 мс. Цифры условные, но такое может быть.

petera
12.05.2017, 16:01
Petera, я так быстро, как Вы, работать с примерами еще не умею, с панелями только начинаю работать, да и опыта маловато. Учусь только.
Вот загружен у меня сейчас в панель мой последний пример,
31108
исправленный после всех Ваших замечаний. К ней три слейва - два мв110 и один ПР200, от каждого по каналу в панель, и я вижу: переключение экранов - около сек, реакция от тумблера до индикатора на панели - 1-2-3 сек. Всего три элемента индикации. Все в живую, никаких эмуляторов. Если это нормально - вопрос снят.
Это или не последний или не все рекомендации выполнены потому, что
Дин.адресация осталась здесь
31115

А должна быть в ф.копирования
31116

Иван Чернецкий
12.05.2017, 18:13
Точно, это не последний. Ошибся с вложением.
Что ж, я понял, буду искать дальше. Спасибо.

Иван Чернецкий
15.05.2017, 07:48
Добрый день, petera!
Вопрос с "тормозами" решен! Все оказалось так, ка Вы описали в последнем посте.

Может Ваши слейвы, те же МВ110 не успевают выполнять команды и еще не готовы к приему следующей посылки от панели, из-за этого тоже будут ошибки связи.
Ведь если здесь стоит 0
31135

то панель "пуляет" запросы к слейвам с максимально возможной частотой, может для МВ110 или ПР нужно не менее, например, 10мс между запросами? А они, к примеру, приходят от панели каждые 5 мс. Цифры условные, но такое может быть.
PSW72 показал определенное число обрывов по тайм-ауту при работе МВ110. Поставил 10мсек - и все полетело!
Вопрос с "тормозами" решен! Вопрос с управлением обменом решен!
Большое спасибо за помощь!

Атаман
17.05.2017, 13:28
Добрый день.

Кто-нибудь сталкивался, что "кнопка вкл, пока нажата" в некоторых случаях возвращает TRUE пока она НЕ нажата? И начинает возвращать FALSE после того как ее нажмешь еще раз. Это баг или у меня руки кривые? )

Евгений Кислов
17.05.2017, 15:50
Добрый день.

Кто-нибудь сталкивался, что "кнопка вкл, пока нажата" в некоторых случаях возвращает TRUE пока она НЕ нажата? И начинает возвращать FALSE после того как ее нажмешь еще раз. Это баг или у меня руки кривые? )

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

konst_smn
18.05.2017, 13:25
Добрый день!
Стоит задача - есть СП307 и частотный преобразователь (ЧП). ЧП является ведомым устройством на сети Modbus RTU.
Необходимо получить из ЧП некоторые параметры, отобразить их элементами "цифровой дисплей".
Параметры из ЧП передаются в виде unsigned (WORD). Отображать параметры следует как float, при этом младший разряд исходного значения
имеет "вес" (где-то 0.01, где-то 0.1).
Корректно ли будеть пользоваться функцией масштабирования для этой задачи, или надо пользоваться макросами?
Предполагаю, что при использовании элемента "Цифровой дисплей", при настройке "Значение - WORD" на вкладке "Регистр Элемента", и на вкладке "Дисплей" "Float" + "Линейное масштабирование" возможно некорректное преобразование типов (т.е непонятно когда и каким способом произойдет преобразование WORD во float).
Если возможно, распишите, как реально будет идти преобразование?
Если
1) Читается WORD;
2) Преобразуется WORD во float преобразованием типа, а не добавлением следующих двух байтов памяти;
3) Выполняется масштабирование
То задача решается самым удобным способом. Так ли это?

Евгений Кислов
18.05.2017, 13:43
Добрый день!
Стоит задача - есть СП307 и частотный преобразователь (ЧП). ЧП является ведомым устройством на сети Modbus RTU.
Необходимо получить из ЧП некоторые параметры, отобразить их элементами "цифровой дисплей".
Параметры из ЧП передаются в виде unsigned (WORD). Отображать параметры следует как float, при этом младший разряд исходного значения
имеет "вес" (где-то 0.01, где-то 0.1).
Корректно ли будеть пользоваться функцией масштабирования для этой задачи, или надо пользоваться макросами?
Предполагаю, что при использовании элемента "Цифровой дисплей", при настройке "Значение - WORD" на вкладке "Регистр Элемента", и на вкладке "Дисплей" "Float" + "Линейное масштабирование" возможно некорректное преобразование типов (т.е непонятно когда и каким способом произойдет преобразование WORD во float).
Если возможно, распишите, как реально будет идти преобразование?
Если
1) Читается WORD;
2) Преобразуется WORD во float преобразованием типа, а не добавлением следующих двух байтов памяти;
3) Выполняется масштабирование
То задача решается самым удобным способом. Так ли это?

Можно привести пример конкретных значений? (что по факту приходит из ПЧВ и что надо отобразить на панели)

petera
18.05.2017, 14:10
Добрый день!
Стоит задача - есть СП307 и частотный преобразователь (ЧП). ЧП является ведомым устройством на сети Modbus RTU.
Необходимо получить из ЧП некоторые параметры, отобразить их элементами "цифровой дисплей".
Параметры из ЧП передаются в виде unsigned (WORD). Отображать параметры следует как float, при этом младший разряд исходного значения
имеет "вес" (где-то 0.01, где-то 0.1).
Корректно ли будеть пользоваться функцией масштабирования для этой задачи, или надо пользоваться макросами?
Предполагаю, что при использовании элемента "Цифровой дисплей", при настройке "Значение - WORD" на вкладке "Регистр Элемента", и на вкладке "Дисплей" "Float" + "Линейное масштабирование" возможно некорректное преобразование типов (т.е непонятно когда и каким способом произойдет преобразование WORD во float).
Если возможно, распишите, как реально будет идти преобразование?
Если
1) Читается WORD;
2) Преобразуется WORD во float преобразованием типа, а не добавлением следующих двух байтов памяти;
3) Выполняется масштабирование
То задача решается самым удобным способом. Так ли это?

Скорей всего речь идет не о Float, т.к. "Параметры из ЧП передаются в виде unsigned (WORD)", а о числах с фиксированной точкой
Ни каких преобразований во Float ненужно.
Читается WORD;
31218

Для числа с фиксированной точкой нужны настройки или Dec, если числа имеют знак
31216
получим (-)123.45 или 123.45

или Unsigned
31217
получим 123.45

konst_smn
18.05.2017, 15:08
Спасибо. До чего же все элементарно, главное не зацикливаться :). Сам дошел до того же методом "научного тыка" :). Начну решать обратную задачу - передачу задания прибору в том же формате.

konst_smn
18.05.2017, 15:10
Можно привести пример конкретных значений?
Евгений, спасибо! Решение найдено, оно в сообщении, следующем за Вашим. Надо просто указать число разрядов после запятой :), масштабирование не нужно.

petera
18.05.2017, 15:39
Спасибо. До чего же все элементарно, главное не зацикливаться :). Сам дошел до того же методом "научного тыка" :). Начну решать обратную задачу - передачу задания прибору в том же формате.
То же элементарно.
Сделать аналогичные настройки у цифрового ввода

Versla
19.05.2017, 09:55
Добрый день!
В соседней теме прочитал, что в проекте можно использовать DIP-переключатели №1 и №4 на задней панели СП310 для организации своего "сервисного" режима.
После перевода переключателя №1 в положение ON значение регистра PSW18.0 действительно изменилось на "1".
Но после выключения питания панель больше не загружается. При подаче питания панель не издает никаких звуков, не включается экран.
Перевод DIP-переключателя №2 в положение ON для принудительной загрузки проекта никак не помогает решить проблему.
Можно ли привести панель в рабочее состояние?

Минеев Антон
19.05.2017, 10:03
Если ПЛК - мастер, то просто записываете из него в эти регистры разряды времени, упакованные в HEX:

PSW302<-----16#2017
PSW303<-----16#04
PSW304<-----16#25
и т.д.

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

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

Добрый день. Вот такая фигня:31240
т.е. С контроллера время уходит, а на панеле в формате H:M:S не отображаются... Записаны в регистры 302, 304, 306, вывожу в таблице вывода данных в том же формате. Заранее благодарю.

Евгений Кислов
19.05.2017, 10:18
Добрый день!
В соседней теме прочитал, что в проекте можно использовать DIP-переключатели №1 и №4 на задней панели СП310 для организации своего "сервисного" режима.
После перевода переключателя №1 в положение ON значение регистра PSW18.0 действительно изменилось на "1".
Но после выключения питания панель больше не загружается. При подаче питания панель не издает никаких звуков, не включается экран.
Перевод DIP-переключателя №2 в положение ON для принудительной загрузки проекта никак не помогает решить проблему.
Можно ли привести панель в рабочее состояние?

Вы уверены, что эти события связаны?
Нет ли вероятности, что проблема в кабеле питания/БП?

Если нет - то лучше отправить прибор в СЦ.

Versla
19.05.2017, 10:57
Вы уверены, что эти события связаны?
Нет ли вероятности, что проблема в кабеле питания/БП?

Если нет - то лучше отправить прибор в СЦ.

Питание точно подается, т.к. моргают индикаторы Ethernet-порта на задней панели, и Windows находит неизвестное устройство, подключенное через usb.
Последовательность действий была следующая:
1. Добавил в проект индикатор и привязал его к биту PSW18.0;
2. Загрузил проект;
3. Перевел DIP-переключатель №1 в положение ON и убедился, что индикатор изменил цвет;
4. Выключил и включил питание с включенным DIP-переключателем №1;
5. Панель перестала загружаться.
Как я понимаю, данная последовательность действий не должна была привести к выходу панели из строя?

Минеев Антон
19.05.2017, 11:32
Сначала необходимо добавить в проект библиотеку Oscat.
http://www.oscat.de/component/jdownloads/category/2-oscat-basic.html?Itemid=0

После этого можно будет использовать ее модули на любом языке.

Туплю... А как добавить? Там формат ST...
Ок, не то скачал... А дальше что?

Евгений Кислов
19.05.2017, 11:54
Туплю... А как добавить? Там формат ST...
Ок, не то скачал... А дальше что?

Прошу прощения, сначала невнимательно посмотрел на скрин. У вас на нем время 9:38:31? Тогда почему в REAL?

Как я уже писал, надо делать так:



PSW302<-----16#2017 (Register Output Module)
PSW303<-----16#04 (Register Output Module)
PSW304<-----16#25 (Register Output Module)

Минеев Антон
19.05.2017, 12:08
Прошу прощения, сначала невнимательно посмотрел на скрин. У вас на нем время 9:38:31? Тогда почему в REAL?

Как я уже писал, надо делать так:



PSW302<-----16#2017 (Register Output Module)
PSW303<-----16#04 (Register Output Module)
PSW304<-----16#25 (Register Output Module)


Делал, тот же результат...

Евгений Кислов
19.05.2017, 12:09
Делал, тот же результат...

Выложите, пожалуйста, эти проекты для ПЛК и панели.

Минеев Антон
19.05.2017, 12:17
Выложите, пожалуйста, эти проекты для ПЛК и панели.
Ок, прикладываю, только не судите - проект еще сырой напрочь...

Евгений Кислов
19.05.2017, 12:30
Ок, прикладываю, только не судите - проект еще сырой напрочь...

Извините, я перестал понимать ситуацию. В приложенном проекте таблица без столбца с меткой времени.
Можете еще раз объяснить, что и куда вы хотите передать (с упоминанием имен переменных и адресов панели).

Евгений Кислов
19.05.2017, 12:47
Возможно, этот пример поможет понять ситуацию:

Минеев Антон
19.05.2017, 14:48
Возможно, этот пример поможет понять ситуацию:

Да, ответ помог:
31252
Так все вижу - все меняется...
А вот таблица:
31253
Там вместо времени прочерки...

Евгений Кислов
19.05.2017, 15:17
Попробуйте настроить вторую таблицу по аналогии с первой (которая работает).

konst_smn
22.05.2017, 23:54
Каким образом работает в СП307 глобальный макрос?
Стоит задача - из преобразователя частоты читаю код аварии, и использую результат в таблице событий реального времени.
Для этого в глобальном макросе читаю регистр по адресу чтения кода аварии, и устанавливаю биты в памяти панели, которые потом используются в таблице
событий реального времени для формирования сообщений.
Создан и откомпилирован глобальный макрос (немного сократил число устанавливаемых битов :) ):


void main (void)
{

WORD AlarmCode = 0;

// read alarm code from ESQ
Read(PLC, 1, MODBUS_RTU_REG_4X, 7683, 0, TYPE_WORD, &AlarmCode);

if(AlarmCode == 0) SetPSB(300);
else ResetPSB(300);
if(AlarmCode == 1) SetPSB(301);
else ResetPSB(301);
if(AlarmCode == 2) SetPSB(302);
else ResetPSB(302);
if(AlarmCode == 3) SetPSB(303);
else ResetPSB(303);
if(AlarmCode == 4) SetPSB(304);
else ResetPSB(304);
}

Результат не увидел. Выполняется ли глобальный макрос "раз в цикл" общей программы СП, или же надо сделать внутри
глобального макроса бесконечный цикл чтения, например вот такой:

void main (void)
{

WORD AlarmCode = 0;

while(1)
{
// read alarm code from ESQ
Read(PLC, 1, MODBUS_RTU_REG_4X, 7683, 0, TYPE_WORD, &AlarmCode);

if(AlarmCode == 0) SetPSB(300);
else ResetPSB(300);
if(AlarmCode == 1) SetPSB(301);
else ResetPSB(301);
if(AlarmCode == 2) SetPSB(302);
else ResetPSB(302);
if(AlarmCode == 3) SetPSB(303);
else ResetPSB(303);
if(AlarmCode == 4) SetPSB(304);
else ResetPSB(304);
}
}

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

Евгений Кислов
23.05.2017, 07:44
Глобальный макрос используется для объявления глобальных переменных и прототипов функции. Сам по себе он не вызывается.
Необходимо вызвать его в пользовательском макросе с нужным аргументами. Пользовательский макрос, в свою очередь, в большинстве случаев циклически вызывается через элемент Функциональная область - так что while не нужен, и да, бесконечный цикл в подавляющем большинстве случаев создаст только проблемы.
Частота вызова макроса настраивается в настройках функциональной области.
Более подробно см. в статье: http://www.owen.ru/uploads/aip_47_sait_kislov_36-37.pdf и Руководстве пользователя.

Ruffian
23.05.2017, 08:44
Здравствуйте. Есть такой элемент в сп300 как сигнальный дисплей, где задаешь диапазон, при выходе за пределы диапазона он начинает мигать. А нельзя ли считать этот бит и передать его в плк?

Евгений Кислов
23.05.2017, 08:45
Здравствуйте. Есть такой элемент в сп300 как сигнальный дисплей, где задаешь диапазон, при выходе за пределы диапазона он начинает мигать. А нельзя ли считать этот бит и передать его в плк?

Нет, к сожалению, такой функционал не предусмотрен.