Вопросы по программированию ПЛК в ISPSoft
Вопросы по программированию ПЛК в ISPSoft
Здравствуйте!
У меня есть контроллер DVP40ES200R. В процессе разработки программы возник ряд проблем, связанных с программированием.
Задача - связаться со сторонним устройством (не Delta) с помощью Modbus RTU (через COM2) и считать с него регистры. Задачу пробовал решить несколькими путями - с помощью инструкции RS и инструкций MODRD, MODRW.
В протоколе общения с устройством указано, что для ыполнения функции чтения регистров (read input registers) требуется сначала отправить два байта - адрес устройства и номер команды, а затем несколько слов (word) - с начальным адресом, количеством регистров и контрольной суммой.
Параметры соединения сконфигурированы по инструкции в руководстве (в описании инструкции RS есть способ задания параметров соединения). Включен режим RTU (M1143=1), D1121=1.
Сначала я попробовал использовать инструкцию MODRW. Программа построена по примеру из описания API MODRW. При выполнении программы слежу (в режиме онлайн) за флагами ошибки, таймаута и т.д., а также за регистрами, в которые должны сохраняться отправленные и принятые данные (D1256-D1295).
Устанавливаю флаг выполнения инструкции в 1 - и ничего не вижу. Нет таймаута, нет ошибок (возможно слежу не за теми флагами?). COM2 - не мигает ни на мнгновение.
Пробую по другому - использую инструкцию RS. Настройки соединения те же. В регистры D0-D5 пишу данные для отправки по протоколу, считаю контрольную сумму (CRC) и использую инструкцию RS. Получаю таймаут. Вопрос - регистры D - содержат, как минимум, данные типа WORD? В протоколе указано что сначала нужно отправлять два байта (адрес и команда), а потом слова. Возможно мне следует, каким либо образом, отправлять именно БАЙТЫ? Пробовал 8bit режим (и с MODRW тоже), но, с ним ничего не изменилось.
Второй вопрос - в руководстве повсюду встречаются константы (типа К6 или Н24). ISPSoft при компиляции ругается на такие обозначения что они Unknown symbol. Для hex чисел получилось использовать обозначения типа 16#96. Что не так с десятичными? Я все правильно делаю?
И наконец - что может быть не так с использованием инструкции MODRW. Пробовал использовать и MODRD. Как мне понять где ошибка?
P.S. К сожалению не смог прикрепить программу к посту - могу отправить на почту по желанию
У меня есть контроллер DVP40ES200R. В процессе разработки программы возник ряд проблем, связанных с программированием.
Задача - связаться со сторонним устройством (не Delta) с помощью Modbus RTU (через COM2) и считать с него регистры. Задачу пробовал решить несколькими путями - с помощью инструкции RS и инструкций MODRD, MODRW.
В протоколе общения с устройством указано, что для ыполнения функции чтения регистров (read input registers) требуется сначала отправить два байта - адрес устройства и номер команды, а затем несколько слов (word) - с начальным адресом, количеством регистров и контрольной суммой.
Параметры соединения сконфигурированы по инструкции в руководстве (в описании инструкции RS есть способ задания параметров соединения). Включен режим RTU (M1143=1), D1121=1.
Сначала я попробовал использовать инструкцию MODRW. Программа построена по примеру из описания API MODRW. При выполнении программы слежу (в режиме онлайн) за флагами ошибки, таймаута и т.д., а также за регистрами, в которые должны сохраняться отправленные и принятые данные (D1256-D1295).
Устанавливаю флаг выполнения инструкции в 1 - и ничего не вижу. Нет таймаута, нет ошибок (возможно слежу не за теми флагами?). COM2 - не мигает ни на мнгновение.
Пробую по другому - использую инструкцию RS. Настройки соединения те же. В регистры D0-D5 пишу данные для отправки по протоколу, считаю контрольную сумму (CRC) и использую инструкцию RS. Получаю таймаут. Вопрос - регистры D - содержат, как минимум, данные типа WORD? В протоколе указано что сначала нужно отправлять два байта (адрес и команда), а потом слова. Возможно мне следует, каким либо образом, отправлять именно БАЙТЫ? Пробовал 8bit режим (и с MODRW тоже), но, с ним ничего не изменилось.
Второй вопрос - в руководстве повсюду встречаются константы (типа К6 или Н24). ISPSoft при компиляции ругается на такие обозначения что они Unknown symbol. Для hex чисел получилось использовать обозначения типа 16#96. Что не так с десятичными? Я все правильно делаю?
И наконец - что может быть не так с использованием инструкции MODRW. Пробовал использовать и MODRD. Как мне понять где ошибка?
P.S. К сожалению не смог прикрепить программу к посту - могу отправить на почту по желанию
- Вложения
-
- выдержка из протокола общения с устройством
- protocol.JPG (89.56 КБ) 24878 просмотров
-
- Сообщения: 955
- Зарегистрирован: 31 окт 2011, 15:18
Re: Вопросы по программированию ПЛК в ISPSoft
Обычная распространенная ошибка у начинающих работать с этим оборудованием - попытка выполнять инструкцию коммуникации по фронту или неким кратковременным флагам. Условие выполнения инструкции (RS, MODRW) должно сохраняться от начала до окончания обмена, и может сниматься только тогда, когда принят последний символ (байт).
Re: Вопросы по программированию ПЛК в ISPSoft
Условие выполняется все время
- Вложения
-
- programm2.JPG (19.47 КБ) 24869 просмотров
Re: Вопросы по программированию ПЛК в ISPSoft
В ISPSoft перед десятичной константой символ "К" не ставится.Второй вопрос - в руководстве повсюду встречаются константы (типа К6 или Н24). ISPSoft при компиляции ругается на такие обозначения что они Unknown symbol. Для hex чисел получилось использовать обозначения типа 16#96. Что не так с десятичными? Я все правильно делаю?
Пример опроса командой RS по протоколу ModbusRTU модема с дискретными входами , правда немного сырой, но рабочий,могу скинуть на почту. К сожалению здесь не знаю как прикрепить.
-
- Сообщения: 955
- Зарегистрирован: 31 окт 2011, 15:18
Re: Вопросы по программированию ПЛК в ISPSoft
А что, в вашем устройстве действительно регистры хранения начинаются с адреса 0 и идут подряд? Устройство допускает передачу 4-х регистров?
-
- Сообщения: 955
- Зарегистрирован: 31 окт 2011, 15:18
Re: Вопросы по программированию ПЛК в ISPSoft
И еще один момент. ISPsoft, на мой взгляд, продукт сыроватый. Что-то в нем изобразить, безусловно можно, но крайне тяжело. Особенно вносить исправления. Все-таки WPL во всех отношениях проработан на порядок лучше. Для него, кстати, и весьма неплохие примеры и разъяснения приведены в мануале для упоминаемых вами API.
Re: Вопросы по программированию ПЛК в ISPSoft
Спасибо за ответы, проблема решена!
Попробовал WPLSoft - появилось много непонятных глюков (с загрузкой, компиляцией и т.д. - ошибки какие-то), но зато понял что для моего устройства стандартные функции MODRD и MODRW не подходят, т.к. в них есть ограничения на номера функций. Решил делать с помощью инструкции RS - в 8bit режиме пришлось просто добавить нулевые регистры для выполнения протокола общения с устройством (для передачи word). И все заработало!
Попробовал WPLSoft - появилось много непонятных глюков (с загрузкой, компиляцией и т.д. - ошибки какие-то), но зато понял что для моего устройства стандартные функции MODRD и MODRW не подходят, т.к. в них есть ограничения на номера функций. Решил делать с помощью инструкции RS - в 8bit режиме пришлось просто добавить нулевые регистры для выполнения протокола общения с устройством (для передачи word). И все заработало!
Re: Вопросы по программированию ПЛК в ISPSoft
Здравствуйте. Не могу разобраться с шаговой логикой на языке SFC в среде программирования ISPSoft. Ранее шаговую логику делал в LADе на WPLSoft все работает прекрасно. Сейчас требуется сделать в ISPSoft и я туплю. Проверяю в эмуляторе, с контроллером пока не проверял. Может быть у кого есть работающий пример? И еще вопрос. Требуется устанавливать бит(ы) в регистре D. Ранее обходился командой MOV. А сейчас требуется взводить, сбрасывать отдельный бит в слове, а как это сделать не пойму.
Re: Вопросы по программированию ПЛК в ISPSoft
По первому вопросу не подскажу, не делал в ISPSoft. По второму - инструкции BSET и BRST работают.
Re: Вопросы по программированию ПЛК в ISPSoft
Точно. Проверил, то что надо. В мануале по программированию контроллеров этих инструкций нет и WPLSoft их не поддерживает. А в ISPSoft эти инструкции добавлены.