Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: ПР200 и СП307- вопрос по сетевым переменным

  1. #1
    Пользователь Аватар для jurich
    Регистрация
    13.05.2012
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию ПР200 и СП307- вопрос по сетевым переменным

    Добрый день!
    Панель- мастер, связь по 485-му. С панели задаю таймеру интервал от 0,1 до 1 сек.
    Вопрос вот в чем: почему переменную приходится перемножать на некое число( в моем случае 656000- нашел опытным путем), чтобы получить 1000мс?
    От чего это зависит? Причем эта константа такая, если умножаю в манели. Если умножать в пр-ке - то там совсем другое?
    Спасибо!

  2. #2

    По умолчанию

    вы уверены, что коэффициент не 65536? просто это похоже что у вас типы данных не совпадают. такое ощущение что вы пишете двойное слово вместо одинарного. у прки, да как и у любого другого модбас устройства регистры 16-ти битные. а если применять не правильный порядок слов в 32 битное числе и передавать его в виде двух последовательных модбас регистров именно такую чушь и получите.

  3. #3
    Пользователь Аватар для jurich
    Регистрация
    13.05.2012
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию

    Интересно... я запросто мог запутаться в этих word/dword. Само железо у меня на работе, могу только в ОЛ и конфигураторе панели смотреть. Я передаю панелью dec в dword, а пр принимает ее как целочисленную. Может в этом и ошибка?

  4. #4

    По умолчанию

    конечно имнно в этом! если вам надо передавать уставки, выходящие за рамки word, то в прке надо собирать нужное значен е из двух регистров модбас. при этом панелью писать dword в регистр с меньшим номером из двух. но если вам не нужна точность настройки менее 0,1 секунды, то используйте просто word и уже регистр в прке умножайте на 100 и передавайте в вставку таймера.
    панель при передаче dword автоматом разбивает на два последовательных модбас регистра. а вам просто повезло, что вы эти два регистра в пр создали. если бы была дырка поле регистра, то панель бы отвечала вам обрывом связи или иной ошибкой. плюс надо проверить: панель должна отправлять младшим регистром вперёд. но это касается только двухрегистровых данных типа флоат или дворд
    Последний раз редактировалось bayk; 18.06.2022 в 16:04.

  5. #5
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,237

    По умолчанию

    Зачем же ему два регистра использовать(тратить), если нужно уставку задавать диапазона 0,1 - 1 секунда с шагом(ступенькой) 0,1 секунда, и одного целочисленного регистра более чем достаточно!
    Можно значение с экрана(FLOAT) умножить на 1000 и преобразовать в целочисленный тип данных(например "UINT"), если панель это может делать! Если панель не может такое делать, передавать значение FLOAT в ПР, в ПР умножить на 1000 и преобразовать в целочисленное, всё!

    Можно сразу уставку задавать в миллисекундах и использовать целочисленную переменную, тогда и преобразовывать ничего не надо!
    Последний раз редактировалось Сергей0308; 18.06.2022 в 16:37.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  6. #6
    Пользователь Аватар для jurich
    Регистрация
    13.05.2012
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию

    По какой-то причине в режимах эмуляции все получается достаточно понятно. Жаль, что не могу сейчас на железе это испробовать, но все попытки так или этак получались со странным результатом. Я начал с того, что просто передать 1(единицу) в пр. И я видел в режиме отладки просто 0. Бился целый день и нашел только костыли: в панели умножаю на константу в 656000 и отсылаю результат в пр. Тогда и вижу на уставке 1000. Разницы в отправке worg/dword не увидел. С fload запутался. 1-ца ваода на панели отобразилась на ней же нулем, и превратилась в пр в жуткое число( вроде с минус 49 степенью) и онлайн калькулятор выдал мне что это 0.

  7. #7

    По умолчанию

    Цитата Сообщение от jurich Посмотреть сообщение
    По какой-то причине в режимах эмуляции все получается достаточно понятно. Жаль, что не могу сейчас на железе это испробовать, но все попытки так или этак получались со странным результатом. Я начал с того, что просто передать 1(единицу) в пр. И я видел в режиме отладки просто 0. Бился целый день и нашел только костыли: в панели умножаю на константу в 656000 и отсылаю результат в пр. Тогда и вижу на уставке 1000. Разницы в отправке worg/dword не увидел. С fload запутался. 1-ца ваода на панели отобразилась на ней же нулем, и превратилась в пр в жуткое число( вроде с минус 49 степенью) и онлайн калькулятор выдал мне что это 0.
    Если панель мастер, то достаточно в настройках поставить галку "Поменять местами регистры", тогда будет правильно читать, писать 32 битную переменную DWORD
    (2 регистра) и REAL (Float) в том числе.
    А типы переменных вы должны выучить как отче наш. Хоть в справке по F1 в конфигураторе СП300
    И начните с простых чисел WORD (целочисленное) формат Unsigned, один регистр и ничего переставлять не надо. Вашу 1000 будет передавать правильно
    Последний раз редактировалось kondor3000; 18.06.2022 в 22:05.

  8. #8
    Пользователь Аватар для jurich
    Регистрация
    13.05.2012
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию

    Спасибо! Испробую все способы и отпишусь о результатах.

  9. #9
    Пользователь Аватар для jurich
    Регистрация
    13.05.2012
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию

    Спецом поехал на работу чтобы все выяснить и вот что оказалось: панель в word d dec и unsigned передает число (у меня установлено 2 знака дробная часть) невзирая на дробную часть. Т.е. 1.20 - передается как 120. С fload в dword и изменением порядка регистров - все передалось как надо. Будем знать.
    И тот и другой способ в данном проекте меня полностью устраивают.
    Спасибо всем большое за помощь!

  10. #10

    По умолчанию

    это логично что фиксированная точка в word/dword просто виртуальная. и просто в таком виде выводится на экран.
    но все равно переделайте обмен на word, иначе у вас будет пересечение регистров и вы не будете знать куда бежать. ну или резервируйте пустой регистр, хотя с 64 регистрами прки это просто запредельное расточительство

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. СП307+ПР200
    от CFC-ST в разделе Панели оператора (HMI)
    Ответов: 10
    Последнее сообщение: 09.11.2021, 15:57
  2. ПР200 + СП307 + частотники
    от sekerin в разделе Программируемые реле
    Ответов: 6
    Последнее сообщение: 13.04.2021, 13:21
  3. Вопрос по СП307
    от LetO в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 02.09.2019, 13:03
  4. ПР200 + СП307-Р + АСУ
    от Borserg в разделе Панели оператора (HMI)
    Ответов: 106
    Последнее сообщение: 09.01.2017, 11:29
  5. Ответов: 4
    Последнее сообщение: 08.05.2014, 07:10

Ваши права

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