Просмотр полной версии : Ошибка обмена данными Сп307 + МВ-110-8АС
Дмитрий1924
01.11.2019, 11:57
Помогите новичку!
По PLC порту подключен модуль МВ110-8АС с адресом 2
В проект конфигуратора добавлен "Цифровой дисплей" и "Индикатор"
Настройка:
1. Цифрового дисплея регистра элемента - PLC порт 2 регистр 4х 1
2. Индикатора регистр элемента - внутренний регистр PSB51
При загрузке на панель на дисплеи выводится цифра 1 - настройка сигнала датчика 4..20 мА, индикатор красный.
При добавлении в проект еще одного цифрового дисплея с настройками регистра элемента - PLC порт 2 регистр 4х 2, после загрузки на панель оба дисплея показывают нули индикатор горит зеленым и раз в пять секунд на мгновение переключается на красный.
Если добавить функциональную область с функцией копирования группы регистров с порта PLC порт 2 регистр 4х 0 - Адрес назначения внутренний регистр PSW300 Значение 5, индикатор горит красным значения на дисплеи после перенастройки не выводятся.
Что это может быть?
И до кучи еще один вопрос на ноуте не компилируются макросы, даже пустые, выводит ошибку Create process failed. На другом ПК компилируются.
Помогите новичку!
По PLC порту подключен модуль МВ110-8АС с адресом 2
В проект конфигуратора добавлен "Цифровой дисплей" и "Индикатор"
Настройка:
1. Цифрового дисплея регистра элемента - PLC порт 2 регистр 4х 1
2. Индикатора регистр элемента - внутренний регистр PSB51
При загрузке на панель на дисплеи выводится цифра 1 - настройка сигнала датчика 4..20 мА, индикатор красный.
При добавлении в проект еще одного цифрового дисплея с настройками регистра элемента - PLC порт 2 регистр 4х 2, после загрузки на панель оба дисплея показывают нули индикатор горит зеленым и раз в пять секунд на мгновение переключается на красный.
Если добавить функциональную область с функцией копирования группы регистров с порта PLC порт 2 регистр 4х 0 - Адрес назначения внутренний регистр PSW300 Значение 5, индикатор горит красным значения на дисплеи после перенастройки не выводятся.
Что это может быть?
И до кучи еще один вопрос на ноуте не компилируются макросы, даже пустые, выводит ошибку Create process failed. На другом ПК компилируются.
Читать из МВ110-8АС можно только по одному конфигурационному регистру!
45416
А если будет два дисплея 4х0 и 4х1, то панель формирует чтение группы регистров - 2шт
А тем более использовать ф.область с чтением 5 конфигурационных регистров недопустимо
Дмитрий1924
01.11.2019, 12:20
Как тогда прочитать несколько параметров с МВ-110-8АС?
Обмануть панель можно так
Для каждого дисплея с конфигурационными регистрами
1.Включаем Динамическую адресацию
45417
в качестве регистра косвенного адреса - ЛЮБОЙ PSW
2.ОБЯЗАТЕЛЬНО
на вкладке Данные
45418
Указываем Коэффициент = 0 !
Дмитрий1924
01.11.2019, 12:41
Спасибо, попробую. То есть если мне понадобится вывести на экран панели измеренные значения датчиков то это придется делать используя ваш пример?
Дмитрий1924
01.11.2019, 14:21
Не могли бы подсказать, как вывести измеренные значения на панель, пытался сделать через функциональную область такая же ошибка со связью. пытаюсь настроить один цифровой дисплей тоже ошибку выдает.
Не могли бы подсказать, как вывести измеренные значения на панель, пытался сделать через функциональную область такая же ошибка со связью. пытаюсь настроить один цифровой дисплей тоже ошибку выдает.
Как INT_16
Регистры от 256 до 263
45419
45420
Формат DEC, кол. знаков после зп. = dP в настройках модуля
45421
Дмитрий1924
01.11.2019, 15:20
Спасибо, теперь ясно я пытался считать данные с регистра 107 (0x107) надо было перевести в DEC.
Можно еще читать как Float
45422
45423
регистры 288, 291, 294, 297, 300, 303, 306, 309 (DWord)
Только возможно придется в настройках порта панели поменять порядок регистров для Float
45424
Дмитрий1924
05.11.2019, 08:05
Спасибо за помощь!
Ефремов Николай
29.11.2019, 08:13
Спасибо, попробую. То есть если мне понадобится вывести на экран панели измеренные значения датчиков то это придется делать используя ваш пример?
Для изучения возможностей СП300 это хороший пример, но для реальной работы с МВ110.8А(С) он плохо подходит. Почему? В реальной системе у Вас будет не один МВ, а вероятно несколько других блоков и, если к каждому блоку обращаться за каждым значением переменной, это перегрузит трафик общения мастера со слейвами- итог постоянные зависания. Кроме того в большом количестве запросов можно и самому запутаться и где-то совершить ошибку. Поэтому для получения данных с МВ110.8АС лучше сделать один запрос мастера, поместив данные в определённую область памяти СП, а вот с неё данные передавать на дисплеи. Например так:
//Все микропрограммы для переферийных устройств помещайте в глобальный макрос
//Здесь считываются 48 регистров из МВ110.8А (можно и 8АС), но используются только 16 в которых данные в формате Float.
//Они будут помещены в заданную Вами область памяти СП, для этого надо указать адрес начального регистра (SPReg).
//Ну а на экран СП выводите значения из этих регистров.
//
// This function reads DWORD from MB110.8A and write it to adress SPReg
void MB110_Read_48Regs(BYTE DevAdr,WORD SPReg)
{
WORD Arr[48];
WORD iVar=0;
WORD iVar1=5;
WORD iVar2=4;
BYTE i=0;
iVar=SPReg; // the first registr where i save resalts this function
Reads(PLC, DevAdr,MODBUS_RTU_REGS_4X, 0,48,&Arr);
for(i=0; i<8; i++)
{
PSW[iVar]=Arr[iVar1];
iVar=iVar+1;
PSW[iVar]=Arr[iVar2];
iVar=iVar+1;
iVar1=iVar1+6;
iVar2=iVar2+6;
}
return;
//Это локальный макрос, чтения из прибора с адресом 24 и записью результатов в регистры СП300
//начиная с 300.
// read from MB110-8A
BYTE DevAdr=24;
WORD SPReg=300;
MB110_Read_48Regs(DevAdr,SPReg);
Для изучения возможностей СП300 это хороший пример, но для реальной работы с МВ110.8А(С) он плохо подходит. Почему? В реальной системе у Вас будет не один МВ, а вероятно несколько других блоков и, если к каждому блоку обращаться за каждым значением переменной, это перегрузит трафик общения мастера со слейвами- итог постоянные зависания. Кроме того в большом количестве запросов можно и самому запутаться и где-то совершить ошибку. Поэтому для получения данных с МВ110.8АС лучше сделать один запрос мастера, поместив данные в определённую область памяти СП, а вот с неё данные передавать на дисплеи.
Ваш совет не имеет отношения к моему примеру.
Т.к. ТС не нужно читать 48 регистров, ему в данном случае фактически нужно читать именно ПО ОДНОМУ регистру, а панель, если дисплеев на экране несколько, норовить сделать чтение группы регистров.
Задача у ТС посмотреть и отредактировать КОНФИГУРАЦИОННЫЕ параметры, например, тип датчика
А читать из МВ110-8АС можно только по одному конфигурационному регистру! Сам МВ110-8АС не допускает чтение нескольких КОНФИГУРАЦИОННЫХ регистров в одном запросе.
Вот и получается, что нужно запретить панели читать больше одного такого регистра.
А Ваш пример на Си по большому счету не нужен, т.к. панель и без макроса может прочитать 48 регистров одной функцией в ф.области. Тем более, что для оперативных параметров можно читать регистры одним запросом в любом количестве и с любого адреса.
Ефремов Николай
02.12.2019, 09:05
Ваш совет не имеет отношения к моему примеру.
А Ваш пример на Си по большому счету не нужен, т.к. панель и без макроса может прочитать 48 регистров одной функцией в ф.области. Тем более, что для оперативных параметров можно читать регистры одним запросом в любом количестве и с любого адреса.
Извините, если чем-то обидел. Но ответ был на вопрос Дмитрия о получении значений датчиков с МВ110.8А. Я осмелился высказать свое мнение и привести пример, как я это реализовал.
Если подскажите как одним запросом прочитать все регистры содержащие FLOAT-значения датчиков с МВ110.8А, то буду благодарен.
Дмитрий1924
02.12.2019, 09:13
Всем большое спасибо, за информацию!
Здравствуйте, Петэра.
Можно еще читать как Float
Спасибо, очень помогло.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot