Страница 377 из 1044 ПерваяПервая ... 277327367375376377378379387427477877 ... ПоследняяПоследняя
Показано с 3,761 по 3,770 из 10436

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

  1. #3761
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от приборист Посмотреть сообщение
    Продолжаем серию вопросов про файлы

    Как можно объединить 2 файла?

    Задача такая - пишем на SD, при вынимании SD карты пишем во внутреннюю память, если SD карта опять вставлена - файл из памяти записывается в файл на SD и продолжается запись на SD.

    Если читать файл в буффер и потом писать в файл на SD - проблем нет, но если файл большой - получаем проблему.
    Пробовал читать размер файла, и передавать Handle как указатель на начало файла - файл дописывается каким то мусором.

    Есть простые решения?
    опять сказать, что команды линукс и sysexec рулят ?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #3762
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    опять сказать, что команды линукс и sysexec рулят ?

    Для 3.5 понял, а для 2.3?
    так сказать задел для newПлк110

  3. #3763
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    ПЛК110-30M (old)
    В проекте в ModBus master получаю переменных общей длиной 40 байт.
    В Слейве передаются переменные еще на 64 байта.
    ModbusMastet по интерфейсу RS485 (115200)
    ModbusSlave - Ethernet (TCP/IP) (10M)

    Какие имеются ограничения на длину данных в master и slave? До какого размера работоспособность будет не нарушена?
    Если на Slave (Eth) выводить переменных на 512 байт?

  4. #3764
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    Какие имеются ограничения на длину данных в master и slave?
    wiki про модбас : 250R/246W

  5. #3765
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    т.е. если данных в канале необходимо больше 246 то нужно заводить второй слейв?

  6. #3766
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    т.е. если данных в канале необходимо больше 246 то нужно заводить второй слейв?
    Указано ограничение на количество байт в одной телеграмме для мастера. В слейве могут быть тысячи регистров.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #3767
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Как это влияет на скорость передачи данных? Правильно ли я понял, что если регистров в слейве плк 500 ( байт 1000) , то мастер отправит 2 телеграммы по 250 регистров. Т.е. время цикла обновления данных на ПЛК слейве увеличится ровно в два раза.
    И мне не стоит беспокоиться сколько регистров я пересылаю. ПЛК все получит, но за больший интервал времени.

  8. #3768
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    ПЛК110-30M (old)
    В проекте в ModBus master получаю переменных общей длиной 40 байт.
    В Слейве передаются переменные еще на 64 байта.
    ModbusMastet по интерфейсу RS485 (115200)
    ModbusSlave - Ethernet (TCP/IP) (10M)

    Какие имеются ограничения на длину данных в master и slave? До какого размера работоспособность будет не нарушена?
    Если на Slave (Eth) выводить переменных на 512 байт?
    Цитата Сообщение от Smith2007 Посмотреть сообщение
    Как это влияет на скорость передачи данных? Правильно ли я понял, что если регистров в слейве плк 500 ( байт 1000) , то мастер отправит 2 телеграммы по 250 регистров. Т.е. время цикла обновления данных на ПЛК слейве увеличится ровно в два раза.
    И мне не стоит беспокоиться сколько регистров я пересылаю. ПЛК все получит, но за больший интервал времени.
    Какие-то абстрактные вопросы.
    Сколько всего устройств и каких используется? Кто тот мастер, который читает/пишет регистры из/в слейв ПЛК сразу по 500 регистров? К стати, ограничение в одной телеграмме не на число регистров, а на число байт, т.е. 500 регистров -это 4 раза по 250 байт. И с чего Вы взяли, что мастеру неприменно нужно одномоментно 500 регистров прочитать/записать?
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #3769
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    На ПЛК создан ModbusSlave.
    В слейве определены 24 переменные REAL. (4*24=96) byte
    4 переменные DWORD - еще (4*4=16) байт
    4 WORD - (4*2=8) байт

    Кроме того предполагаю потребуется еще некоторое количество переменных. Вот и спросил про ограничения.

    500 регистров -это 4 раза по 250 байт

    Да, это я ошибся когда сообщение писал. Сначала написал про 250 регистров (500 байт) и 2 телеграммы, а затем написал про 500 регистров не исправив кол-во телеграмм.
    Но если правильно понял, то беспокоится о количестве переменных не особенно стоит. Больше 500 байт я в любом случае не наберу.
    _____________________________________________


    Еще столкнулся с проблемой
    В слейве определены 4 последовательных 8-ми битных регистра.
    Присвоены имена ACode0, ACode1, ACode2, ACode3
    Кроме того имеется массив с 32 строками из переменной типа структура. В структуре есть одно поле BOOL.
    В соответствии с этим полем необходимо установить значение бит в битовых переменных слейва Acode0, ACode1, ACode2, ACode3

    Массив обрабатывается в цикле (одна строка за один цикл вызова программы)
    Чтобы можно было обратиться к 4-м указанным переменным, я определил указатель на первую переменную ACode0 и указал тип DWORD


    Код:
    var pt_ACode: POINTER TO DWORD;
    var i: BYTE; (i меняется от 0 до 32 в программе)
    
    
    CASE i OF
    
    0:
    Код:
       pt_ACode := ADR(ACode0); 
    
    1..32:
       Далее в цикле устанавливаю биты
       IF (некоторое условие1) THEN pt_ACode^:= PUTBIT(pt_ACode^, i-1, TRUE); END_IF;
       IF (некоторое условие2) THEN pt_ACode^:= PUTBIT(pt_ACode^, i-1, FALSE); END_IF;  
    
       i:= i+1;
    ELSE
      i := 0;
    
    END_CASE;
    


    При компиляции дает сообщение об ошибке, что не определена переменная PUTBIT.
    Библиотека UTIL.LIB подключена.
    Как заставить программу увидеть эту функцию?



  10. #3770
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Похоже Codesys заглючил.
    Очистил проект. Удалил библиотеку, затем добавил снова. Перекомпилировал - без ошибок.

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

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

Ваши права

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