Страница 131 из 1044 ПерваяПервая ... 3181121129130131132133141181231631 ... ПоследняяПоследняя
Показано с 1,301 по 1,310 из 10438

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #1301

    По умолчанию

    Цитата Сообщение от ASo Посмотреть сообщение
    А как Вы собираетесь разобрать перехваченный запрос? Не слишком ли рискованно, если доки - нет
    через pointer_to_byte. Ведь известно в каких байтах модбас запроса лежит нужная мне информация.

    Цитата Сообщение от capzap
    а что разве нет? Может быть я со своими наработками спутал, но вроде где то были выложены архивы и отдельно мастер и отдельно слейв
    согласно документации на modbus.lib она только под мастер заточена. Хотя я могу конечно ошибаться. Я не настолько еще силен, чтоб все правильно анализировать.

    petera, capzap, т.е. я могу в ответе на запрос например десяти регистров в блоке данных последовательно просто записать все эти регистры в десятичной системе счисления и все должно заработать, правильно я понимаю? Нужно только учесть, что переменные различных типов имеют различную длину?
    Чтобы понять рекурсию нужно понять рекурсию

  2. #1302

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    если в мастере используются как в инпутах, так и в холдах адреса начинающиеся с нуля, попробуйте использовать слейв с универсальной общей памятью не такое уж и ровное место получится
    совершенно верно, все так и есть как говорит capzap. Поэтому и приходится велосипед изобретать)) С другой стороны с этим надо разобраться в любом случае.
    Чтобы понять рекурсию нужно понять рекурсию

  3. #1303

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Еще раз повторю, мастера должны делаться редактируемыми, чтоб подстроиться под любой слейв, а не наоборот. Ваш случай конечно возможен, но тут наверное лучше купить такую же железку что стояла, чтоб не ломать голову как теперь написать прогу.
    По разработке программы, скачайте ОСКАТовскую библиотеку под network, в ней описан модбас сервер, там только необходимо его переработать из интерфейса modbasTCP в модбас для последовательной шины, т.е. убрать в начале 6 байт и в конце добавить контрольную сумму, ну и естественно способ передачи, не Ethernet а любая последовательная шина


    ЗЫ при работе с модбас, забудте что есть , там есть только флаги(биты) и регистры(слово из 2-х байт)
    я понимаю что мастер должен делаться редактируемым и то что я щас делаю это извращенство, но тут просто нестандартный случай. Библиотеку посмотрю, спасибо.
    ЗЫ: спасибо за это замечание, но как же тогда впихнуть переменную real в 2 регистра? Что-то я где-то не понимаю в основах информатики видимо. Слово из двух байт это 16 бит(флагов). Переменная типа real занимает 4 байта, т.е. 32 бит. Как мне записать в блоке данных массива ответа (который является кадром Modbus rtu) эту переменную, чтобы мастер понял мой ответ?
    Чтобы понять рекурсию нужно понять рекурсию

  4. #1304

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    http://kipshop.ru/Primeri/Samples_pl...nd_OwenNet.zip может здесь есть, там всего лишь реал надо разбить с помощью указателя на четыре байта и поменять зеркально местами
    спасибо за помощь. Буду пытаться разобраться
    Чтобы понять рекурсию нужно понять рекурсию

  5. #1305

    По умолчанию

    Снова появился возможно глупый вопрос. Но ответа я на него найти не могу. Возможно ли в CDS что-то вроде наследования? Ну то есть у меня есть FB в котором входная переменная массив. Мне нужно присваивать этому входному массиву данные других массивов, которые разные по длине. Собственно длину массива мне и нужно наследовать, потому что мне этот FB нужен будет не единожды, а копировать его в разные места не хочется. Однако компилятор требует чтоб входной массив FB был объявлен с длиной.
    Чтобы понять рекурсию нужно понять рекурсию

  6. #1306

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Создайте входные переменные, это указатель POINTER TO BYTE на начальный адрес массива и вторая переменная это количество, сколько элементов массива требуется обработать. И в теле ФБ через цикл обрабатываете все элементы не забывая после сделать приращение указателю
    спасибо за ответ. То есть мы получается последовательно прописываем каждый элемент в массив ФБ. Однако при объявлении массива ФБ все равно потребуется указать его длину? Дело в том, что длина этого входного массива принципиально важна, т.к. в ФБ при вычислении используется его длина.
    Чтобы понять рекурсию нужно понять рекурсию

  7. #1307

    По умолчанию

    Хлопцы ! Подскажите . По разным причинам начал учить CFC (с ноля ) .Где можно найти описание операторов и блоков (EQ .GT.OR .LT и т.д.)

  8. #1308

    По умолчанию

    В справке или прилагаемом описании.

  9. #1309

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    нет, внутри тела ФБ мы вообще не должны знать о параметрах массива, мы обрабатываем через FOR либо байт либо слово либо двойное слово, исходя из размерности ячейки массива, получив указатель на начальный байт массива, это означает что на вход ФБ подаем POINTER TO BYTE, а не POINTER TO ARRAY...
    а в "родителе" ФБ мы вольны создавать массив какой угодно, например используя динамическое выделение памяти
    не могу сказать что до конца понял как это реализовать. Не могли бы вы меня пнуть в направлении описания реализации динамического выделения памяти? А что-то не могу в руководстве Codesys найти, а так как это делается в паскале компилятор сделать не дает. Возможно после прочтения об реализации сего я пойму что к чему.
    Чтобы понять рекурсию нужно понять рекурсию

  10. #1310

    По умолчанию

    Вопрос: в даташите написано "Сохраняемые переменные обозначаются ключевым словом RETAIN. Эти переменные сохраняют свои значения, даже если произошла авария питания (выключение и включение) контроллера, что равносильно команде сброс (''Онлайн' 'Сброс'')"
    У меня переменные объявлены как "VAR RETAIN PERSISTENT", программу опробую в режиме эмуляции, при старте/стопе программы данные переменные сохраняют свои значения, однако при команде "Онлайн/сброс" они обнуляются, вопреки написанному в мануале. Так вот, я нахожу на мысль, что данный случай возможен только в режиме эмуляции и при работе на реальном контроллере эти переменные при сбросе обнулятся не будут (но, к сожалению, реального ПЛК у меня нет). Прошу матёрых специалистов подтвердить или опровергнуть мои домыслы.
    Спасибо.

Страница 131 из 1044 ПерваяПервая ... 3181121129130131132133141181231631 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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