PDA

Просмотр полной версии : Ошибка обмена данными Сп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. На другом ПК компилируются.

petera
01.11.2019, 12:17
Помогите новичку!

По 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АС?

petera
01.11.2019, 12:25
Обмануть панель можно так
Для каждого дисплея с конфигурационными регистрами
1.Включаем Динамическую адресацию
45417
в качестве регистра косвенного адреса - ЛЮБОЙ PSW

2.ОБЯЗАТЕЛЬНО
на вкладке Данные
45418

Указываем Коэффициент = 0 !

Дмитрий1924
01.11.2019, 12:41
Спасибо, попробую. То есть если мне понадобится вывести на экран панели измеренные значения датчиков то это придется делать используя ваш пример?

Дмитрий1924
01.11.2019, 14:21
Не могли бы подсказать, как вывести измеренные значения на панель, пытался сделать через функциональную область такая же ошибка со связью. пытаюсь настроить один цифровой дисплей тоже ошибку выдает.

petera
01.11.2019, 15:01
Не могли бы подсказать, как вывести измеренные значения на панель, пытался сделать через функциональную область такая же ошибка со связью. пытаюсь настроить один цифровой дисплей тоже ошибку выдает.
Как INT_16
Регистры от 256 до 263
45419

45420

Формат DEC, кол. знаков после зп. = dP в настройках модуля
45421

Дмитрий1924
01.11.2019, 15:20
Спасибо, теперь ясно я пытался считать данные с регистра 107 (0x107) надо было перевести в DEC.

petera
01.11.2019, 15:32
Можно еще читать как 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);

petera
29.11.2019, 13:07
Для изучения возможностей СП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
Всем большое спасибо, за информацию!

Gans
23.07.2020, 13:37
Здравствуйте, Петэра.

Можно еще читать как Float
Спасибо, очень помогло.