Modlook ошибка устройства 130

Время на прочтение
2 мин

Количество просмотров 17K

Сегодня я бы хотел рассказать о программе, с помощью которой я начинал изучать протокол ModBus и ПЛК. Я ей пользуюсь до сих пор, и лично видел её в использовании у нескольких наладчиков. Если кому-то интересна история её создания или исходники прошу под кат.

image

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

Первый автор программы тесно связан с АСУ ТП. Появление ПЛК с ModBus в 90-х потребовало какой-то программы для работы с этим протоколом. В те времена чтобы посмотреть содержимое регистров контроллера нужно было либо устанавливать на компьютер среду программирования контроллера, что неудобно, либо покупать какую-то платную программу. Хотелось что-то лёгкое и компактное, что можно таскать на дискете. Это и привело к написанию собственной программы. Прототип программы был написан под DOS на Basic. Прототип, кстати, получился не очень удачным. Позже проект был сконвертирован в Visual Basic. И где-то в начале 2000-х программа была переписана на Delphi. В середине 2000-х исходники попали уже ко мне. Тогда я вынес опрос по ModBus в отдельный поток, и добавил несколько мелких улучшений. Недавно добавил режим опроса ModBus rtu поверх TCP/IP и сконвертировал проект в Lazarus.

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

Для адресации данных используются номера регистров (отсчет начинается с 1), а не физические адреса. Тогда привычнее было начинать подсчет с единицы, а не с нуля.

ModLook может опрашивать регистры Coil Status (0ХХХХ), Discrete Inputs (1ХХХХ), Holding Registers (4ХХХХ), Input Registers (3ХХХХ). Можно разрешить или запретить опрос какого-то из этих регистров галочкой «Опрос».

Ссылка на исходники

Перейти к контенту

Время на прочтение
2 мин

Количество просмотров 16K

Сегодня я бы хотел рассказать о программе, с помощью которой я начинал изучать протокол ModBus и ПЛК. Я ей пользуюсь до сих пор, и лично видел её в использовании у нескольких наладчиков. Если кому-то интересна история её создания или исходники прошу под кат.

image

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

Первый автор программы тесно связан с АСУ ТП. Появление ПЛК с ModBus в 90-х потребовало какой-то программы для работы с этим протоколом. В те времена чтобы посмотреть содержимое регистров контроллера нужно было либо устанавливать на компьютер среду программирования контроллера, что неудобно, либо покупать какую-то платную программу. Хотелось что-то лёгкое и компактное, что можно таскать на дискете. Это и привело к написанию собственной программы. Прототип программы был написан под DOS на Basic. Прототип, кстати, получился не очень удачным. Позже проект был сконвертирован в Visual Basic. И где-то в начале 2000-х программа была переписана на Delphi. В середине 2000-х исходники попали уже ко мне. Тогда я вынес опрос по ModBus в отдельный поток, и добавил несколько мелких улучшений. Недавно добавил режим опроса ModBus rtu поверх TCP/IP и сконвертировал проект в Lazarus.

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

Для адресации данных используются номера регистров (отсчет начинается с 1), а не физические адреса. Тогда привычнее было начинать подсчет с единицы, а не с нуля.

ModLook может опрашивать регистры Coil Status (0ХХХХ), Discrete Inputs (1ХХХХ), Holding Registers (4ХХХХ), Input Registers (3ХХХХ). Можно разрешить или запретить опрос какого-то из этих регистров галочкой «Опрос».

Ссылка на исходники

Простая программа для просмотра регистров контроллера с Modbus — протоколом:

  • Простой, интуитивно понятный интерфейс;
  • Все настройки вынесены на основную панель;
  • Просмотр до 125 регистров каждого из типов (coils, input, holding);
  • Регистры типа 0ХХХХХ, 1ХХХХХ, 4ХХХХХХ, 3ХХХХХХ;
  • Запись в регистры типа 0ХХХХХ;
  • Запись в регистры типа 4ХХХХХ;
  • Работа через COM-порт и поверх TCP/IP;
  • Бесплатное распространение программы.

Ещё статьи по теме:

Бесплатная SCADA-система

Бесплатный OPC-сервер Modbus

Скачать Скачать Modbus — Master

Содержание:

  1. Компоненты СИМП Лайт
  2. Редактор каналов
  3. Источники данных
  4. Modbus driver
  5. Коды ошибок Modbus

Расшифровка кодов ошибок Modbus:

 

01

  Принятый код функции не может быть обработан.
 

02

  Адрес данных, указанный в запросе, недоступен.
 

03

  Значение, содержащееся в поле данных запроса,
  является недопустимой величиной.
 

04

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

05

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

06

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

07

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

08

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

10 (0A hex)

  Шлюз неправильно настроен или перегружен запросами 
 

11 (0B hex)

  Slave устройства нет в сети или от него нет ответа 

Простая программа для просмотра регистров контроллера с Modbus — протоколом:

  • Простой, интуитивно понятный интерфейс;
  • Все настройки вынесены на основную панель;
  • Просмотр до 125 регистров каждого из типов (coils, input, holding);
  • Регистры типа 0ХХХХХ, 1ХХХХХ, 4ХХХХХХ, 3ХХХХХХ;
  • Запись в регистры типа 0ХХХХХ;
  • Запись в регистры типа 4ХХХХХ;
  • Работа через COM-порт и поверх TCP/IP;
  • Бесплатное распространение программы.

Ещё статьи по теме:

Бесплатная SCADA-система

Бесплатный OPC-сервер Modbus

Скачать Скачать Modbus — Master

Содержание

  • Коды ошибок
  • A) Полностью соответствуют MQL4 OrderSend() требованиям синтаксиса
  • B) Ошибка 130: == «недействительная остановка»
  • C) Хорошая практика не назначать в extern итераторных-переменных

MQL для чайников, программирование на MQL4, MQL5

Что значит 2010.02.01 17:00 MyExpert GBPUSD,M15: OrderModify error 130
почему обычно эта ошибка возникает?

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

Коды ошибок

GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию ErrorDescription(), определенную в файле stdlib.mqh.

Коды ошибок, возвращаемые торговым сервером или клиентским терминалом:

Значение Описание
Нет ошибки
1 Нет ошибки, но результат неизвестен
2 Общая ошибка
3 Неправильные параметры
4 Торговый сервер занят
5 Старая версия клиентского терминала
6 Нет связи с торговым сервером
7 Недостаточно прав
8 Слишком частые запросы
9 Недопустимая операция нарушающая функционирование сервера
64 Счет заблокирован
65 Неправильный номер счета
128 Истек срок ожидания совершения сделки
129 Неправильная цена
130 Неправильные стопы
131 Неправильный объем
132 Рынок закрыт
133 Торговля запрещена
134 Недостаточно денег для совершения операции
135 Цена изменилась
136 Нет цен
137 Брокер занят
138 Новые цены
139 Ордер заблокирован и уже обрабатывается
140 Разрешена только покупка
141 Слишком много запросов
145 Модификация запрещена, так как ордер слишком близок к рынку
146 Подсистема торговли занята
147 Использование даты истечения ордера запрещено брокером
148 Количество открытых и отложенных ордеров достигло предела, установленного брокером.

Коды ошибок выполнения MQL4 программы:

GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию ErrorDescription(), определенную в файле stdlib.mqh.

Коды ошибок, возвращаемые торговым сервером или клиентским терминалом:

Я пытаюсь вставить takeprofit и stoploss аргумент в моей SendOrder() функции, но я получаю следующее сообщение об ошибке:

Я уже проверил документацию для функции NormalizeDouble() , но я все еще получаю ошибку.

A) Полностью соответствуют MQL4 OrderSend() требованиям синтаксиса

Ваш код не на установление правильной SHORT торговли входной цены, как это следует читать , а Bid не Ask (эта ошибка скрыта , как это эффективно замаскированных на довольно космическом расстоянии 100 точек на допустимом расстоянии проскальзывания от указанной цены) ,

Ваш код не при назначении int ( 0 ) в месте, где , string как ожидается.

Вы должны проверить с вашим брокером несколько деталей:

  1. Допускает ли их условия и условия в OrderSend() одной стоп-инструкции, в т.ч., TP и SL, или же брокер T & C требуют , чтобы сначала открыть торгово-позицию и только после того, как это происходит , чтобы позволить OrderModify() инструкции к прайс-уровней настройки TP и SL?
  2. В любом случае, проверьте настройки Брокер T & C для STOPLEVEL & FREEZELEVEL расстояний, в пределах которого Брокер отвергает любые TP и SL установки (ы) или модификации (части).

C) Хорошая практика не назначать в extern итераторных-переменных

Хотя это не является корневой причиной вашей проблемы, не приживаются с передовой отраслевой практикой, один из которых не является присвоить любое значение заявленного extern . Вместо объявить собственную переменную, что вы контролируете объем & назначения их, но оставить extern (s) не-прикоснулся с вашей стороны кода.

  • Modifier is disabled skipping apply blender ошибка
  • Monopoly one ошибка 303
  • Modicon tsx micro ошибка
  • Modern warfare код ошибки pilum
  • Monopoly one код ошибки 191