Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Пт мар 29, 2024 10:30

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 57 сообщений ]  На страницу Назад  1, 2, 3, 4  Вперёд
Автор Сообщение
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 16:33 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Хорошо. Созрею выложу.

А какой конкретно контрольной суммы расчет хочется увидеть.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 19:33 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
Ярослав писал(а):
А какой конкретно контрольной суммы расчет хочется увидеть

Мне нужно вычислить CRC, но только не для шеснадцатиричных данных, а десятичных. Таких наверно стандартной функцией не вычислить.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 21:06 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
CRC и LRC это разный спосб рассчета контрольных сумм.

Для ModBusASCII
LRC сложены все байты данных в контрольное слово, проинвертированы все биты слова и прибавлена единица.
Данные функции можно сделать при помощи команд
SUM читай ее описание + команда NEG.

Для ModBusRTU посложнее при помощи контроллера.
СRC. А вот SCU модуль сам считает.

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

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт дек 17, 2009 22:56 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
Верно. Сейчас уточнил... Проблема была не в методе расчета контрольной суммы, а в передаче ее в десятичном коде! Прибор передает ее в формате ASCII как цифры десятичного кода


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт янв 14, 2010 12:01 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Выкладываю в примеры программу опроса приборов ОВЕН
в том числе и ICPCON.
Что не ясно пишите спрашивайте.

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

Сам конечно имею текст доведенной до конца программы, но останется он уменя.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Чт янв 14, 2010 17:43 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
Приятно посмотреть на серьезную программу.
Хотелось бы еще небольшое описание чтобы не долго мучаться с расшифровкой программы
Речь идет про двухканальный измеритель-регулятор ТРМ 201?
Все в одном протоколе описать - идея хорошая, но для понимания сложно. Чем проще, тем лучше. В SCU можно закачивать несколько протоколов.
В секции ICPCON странные переходы CJP #10 - JME #10. Не понял зачем делать задержку именно так. Малое время скана программы как то влияет на обработку данных?
Кажется, что алгоритм передачи сигналов выполнен слишком замудрено.
Переменной адрес_рассчетное_смещение в блоке ICPCON_Digital_70хх отводится достаточно важное значение, выполняется вызов номера последовательности по смещению. Зачем делать это смещение до конца так и не понял, просьба пояснить.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Пт янв 15, 2010 11:16 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
Про протокол овна толком не знаю, а вот организация связи с ICPCON как-то слишком сложна, можно значительно проще. Ошибки связи иногда надёжней и проще определить по первому слову принятых данных, затирая его перед выполнением PMCR.

Программер давно поддерживает массивы. CJ1M кажись с четвёртой версии начал поддерживать массивы с указателем в виде адреса (символа), т.е. в функции можно записать Символ[указатель] и не мучатся с индексными регистрами. А если лень лепить символы в программере, то их очень быстро можно наклепать в экселе и скопировать в программер contents/content.php


У вас нет необходимых прав для просмотра вложений в этом сообщении.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Пт янв 15, 2010 20:40 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Да, конечно можно организовать опрос ICPCON гораздо проще. Почти в две команды.
Но-тогда
опрос каждого ICPCON только при подаче новой команды PMCR.

Олег писал(а):
а вот организация связи с ICPCON как-то слишком сложна, можно значительно проще.


В даном примере, опрос ICPCON производится для всех ICPCON одной командой, а перебор адресов делает сам SCU. Это дает выигрыш во времени передачи данных в модуль SCU и обратно.
Можно конечно упростить протокол для ICPCON, и опрашивать всех одновременно без вываливания из выполнения команды на неответившем модуле. Но в этом случае мы не узнем кто не ответил, А так как модуль ICPCON с дискретными входами 16штук, заполнить поле принятых данных несуществующим значением перед передачей данных, не представляется возможным.
Вообще протокол для ICPCON попал в программу до кучи. Я выдал на сайт рабочий пример реализации протокола "ОВЕН", с формированием CRC, из требуемых данных. С распаковыванием принятых данных, и их контролем.

Олег писал(а):
Программер давно поддерживает массивы. CJ1M кажись с четвёртой версии начал поддерживать массивы с указателем в виде адреса (символа), т.е. в функции можно записать Символ[указатель] и не мучатся с индексными регистрами.

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

Олег писал(а):
А если лень лепить символы в программере, то их очень быстро можно наклепать в экселе и скопировать в программер contents/content.php


"Лепить" - насколько я вижу по своей программе, особенно в опросе ICPCON, мне совершенно не лень.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Пт янв 15, 2010 20:47 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
I1 писал(а):
В секции ICPCON странные переходы CJP #10 - JME #10. Не понял зачем делать задержку именно так. Малое время скана программы как то влияет на обработку данных?

Нет, малое время скана программы не влияет. Это я упражнялся на лабораторном контроллере. А 10мсек заложил как среднее время выполнения нашей программы. Хотя чаще 8-9мсек.
А именно упражнялся в сравнении скорости опроса модулей ICPCON.
Констатирую факт.
Увеличение времени цикла программы при влияет на время цикла опроса. Пробывал менять любые системные настройки контроллера, связанные с режимом передачи данных к модулям.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Пт янв 15, 2010 21:57 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
I1 писал(а):
Переменной адрес_рассчетное_смещение в блоке ICPCON_Digital_70хх отводится достаточно важное значение, выполняется вызов номера последовательности по смещению. Зачем делать это смещение до конца так и не понял, просьба пояснить.


Идея опроса модулей ICPCON такова.
1. Надо опросить все (до 16) модули на линии выполнив всего один запрос команды PMCR. Максимально уменьшаем время опроса.
2. Требуется определить кто ответил, кто нет. - в целях безопасности.
3. Поддержать протокол ICPCON, для различных модулей дискретного ввода/вывода.

Способ решения.
1. Передать в данных для PMCR все опрашиваемые адреса, передать количество опрашиваемых модулей, передать информацию для модулей вывода.
1.1. Последовательность в модуле PMCR, на каждом новом шаге берет новые данные из данных с расчетным смещением.
1.2. Таже кладет куда надо с расчетным смещением.
1.3. При неответевшем модуле вываливается из выполнения. номер Шага прописываем как номер неответившего модуля.
1.4. А запустить треба опрос далее.
1.4.1. Берем новую последовательность с (номером вывалевшегося равным шага) другим расчетом смещения получения данных. Ну и конечно с уменьшенным количество м шагов выполнения.

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

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Сб янв 16, 2010 10:58 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
Массив с указателем в лестнице работает, для этого я и оставил в примерчике ФБ для контроля слейвов DRT, блок общается с адресами контроллера через массив внутренней переменной, т.е. там полная замена индексных регистров для сравнения с твоим ФБ на регистрах. Кстати массивы с указателем в виде символа работают и в CP1E, но не работают в CP1L. ( во я матерился когда пришлось писать прогу с кучей однотипных вычислений, которая должна работать на обоих типах контроллеров)

Когда говорил про лень, имел ввиду что при использовании массива описывать символов придётся для наглядности больше, чем если используешь регистры.(т.е. я не пытался тебя как-то подколоть)

Если критична скорость тогда да, если несколько PMCR между их выполнением возможна пауза в цикл программы. Можно просто вызвать прерывание с нужным номером после окончания последовательности.(Response Type, вместо Scan ставим Interrupt Fixed #) а в этом прерывани выполнить новую PMCR или весь таск опроса, в этом случае скорось наверно будет на полкопейки выше чем в твоём примере

Если прописать 16 шагов подряд в SCU, а на ошибку поставить Next на следующий шаг, номер шага с ошибкой вроде как можно отследить в программере? Сам не пробовал, но по мануалу это вроде возможно?

---------------------
Дискретные ICP лучьше не использовать когда сигналы важны, да и оптронов на входах у них нет. Лучьше CompoBus-S или CompoNet, разница по деньгам незначительная а вот скорость!!! CompoBus-S работает и в прерывании по расписанию с IORF, т.е. скорость опроса может быть быстрее чем цикл контроллера, Мне приходилось разгонять сетку на 128 точек до цикла опроса в 1 ms чтобы поймать очень короткие сигналы.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Сб янв 16, 2010 12:04 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Олег писал(а):
Дискретные ICP лучьше не использовать когда сигналы важны, да и оптронов на входах у них нет. Лучьше CompoBus-S или CompoNet, разница по деньгам незначительная а вот скорость!!!

Применение ICPCON у нас исторически сложилось, лет 6 назад установили на 2 агрегатах. На одном 16 модулей входа+выхода, т.е. опросить надо 32 раза. На другом 10 модулей разных конфигураций. Тогда были еще познания во оборудовании маловаты, начинали только автоматизировать новым оборудованием предприятие, и приходилось экономить чтобы начальство давало работать нам а не намимать внешних производителей. Те наставят кто ОМРОН, кто СИМЕНС, кто АЛЕНбредли, были предложения и LG, микродаты и поляки приходили. вот и разгребай потом за ними. Приходилось делать жесткий ценовой демпинг. А сейчас красота, сплошной ОМРОН, начальство верит нам, заказы у производителей разных железяк только через проверку нами и обязательно с оборудованием ОМРОН.

На данный момент используем Профибас.

CompoBus-S или CompoNet, может и хорошо но думаю нет надобности плодить нам еще один тип оборудования. Сложно людям объяснять, когда на одном агрегате стоит, несколько типов рапределенных систем, да еще они раскинуты похожим видом кабелей, и называем их всех одинаково "витая пара".
Ну да ладно, не этой темы разговоры эти.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Сб янв 16, 2010 12:12 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Олег писал(а):
Массив с указателем в лестнице работает, для этого я и оставил в примерчике ФБ для контроля слейвов DRT, блок общается с адресами контроллера через массив внутренней переменной, т.е. там полная замена индексных регистров для сравнения с твоим ФБ на регистрах.


Вообще я так давно пробывал, но программер мне не давался. И я ПРОГРАММЕРА понял так что это работает толко в структурированном тесте. Там это у меня получалось.

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

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Сб янв 16, 2010 12:22 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Ярослав писал(а):
Если критична скорость тогда да, если несколько PMCR между их выполнением возможна пауза в цикл программы. Можно просто вызвать прерывание с нужным номером после окончания последовательности.(Response Type, вместо Scan ставим Interrupt Fixed #) а в этом прерывани выполнить новую PMCR или весь таск опроса, в этом случае скорось наверно будет на полкопейки выше чем в твоём примере


Почитал я по поводу прерываний PMCR вызываемых по выполнении последовательности, есть там ограничения для контроллеров CJ1M. Не стал разбираться.
А далее напишу лучше вот что -
В нормальных проектах лучше пользовать промышленные протоклоы, Девайснет, Профибас, ЕзернетIP, ну и т.д. и т.п. Там диагностики достаточно.
А SCU модуль пользовать только для общения с аппаратурой (как правило измерительной локальной), например терморегуляторы.
Для дешевых задач можно не использовать SCU модуль а работать через нижний порт контроллера, терминал подключать на верхний порт. Для программирования переключим порт в режим Toolbas переключателем, для режима работы с терминала переключатель вернем обратно, коенчно надо дать настройки порту.
Делал так один раз.
В таком случае о выполнении последовательности речи не идет, а надо все ручками прописывать.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: ModBus RTU? SCU
СообщениеДобавлено: Сб янв 16, 2010 18:39 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
Олег.
Проверил я по поводу индексной адресации внутри массива.
Да, так как ты привел работает в 3 версии тоже, но только внутри FB.
А вот при написании только "релейно контакным языком" в простом тектсте, дает ставить только константы, даже в 4 версии контроллера. :|

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
Показать сообщения за:  Сортировка  
Начать новую тему Ответить на тему  [ 57 сообщений ]  На страницу Назад  1, 2, 3, 4  Вперёд

Часовой пояс: UTC + 3 часа (Russia: MSK)


Кто сейчас на конференции

Сейчас этот форум просматривают: в настоящее время на конференции нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3