Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя
Показано с 41 по 50 из 52

Тема: Universal Modbus Device или библиотека Modbus.lib?

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,799

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    8Д4Р давно юзал, и помню была какая-то особенность (не помню какая, но в стоп-листе написано "оставить rs.dl=2 - на .... ?") - но все работало. И все отвечало со всеми CRC и т.д.
    Кто такой "Стоп-лист" ? Ну подождал раб 2мс , типо с мислями собрался , нормальное поведение , даже и не тормоз...

  2. #2

    Thumbs up

    Цитата Сообщение от Валенок Посмотреть сообщение
    выкиньте case.1 коли не юзаете

    в принципе :

    это сильный ход ))

    но вообще - выкиньте это
    Из песни слов не выкинишь. Такой "гениальный" пример с офф сайта.
    Попробую сейчас ваши советы.

  3. #3

    По умолчанию

    вот так сделал:
    Код:
    PROGRAM PLC_PRG
    VAR
    	get_modbus: MB_RD_INP_REGS:= (Enable := TRUE);		(*функция 04 - чтение трех параметров типа INT*)
    
    	Buffer: ARRAY[0..255] OF BYTE;		(* байтовый буфер данных *)
         	cmpl: BOOL;
    	port_opened:  BYTE := 0;
    	Init: BOOL;								(* признак инициализации пользовательской программы *)
    	Settings:COMSETTINGS;				(* настройки последовательного порта *)
          	com_num: PORTS:=0;				(*0 - RS-485, 1 - RS-232*)
    	enabl: BOOL;							(*состояние работы блока*)
    	err: INT;								(*номер ошибки*)
    	TimeOut: TIME:=T#50ms;				(*таймаут*)
    	Exception: BYTE;
    	DataSize: WORD;
    
    
    	t: DWORD; 					(*переменная для организации счетчика*)
    	A: WORD := 0;					(*счетчик*)
    	x:WORD;						(*считанное значение*)
    	x1: INT;						(*переменная для записи по сети*)
    	x2: INT;						(*переменная для записи по сети*)
    	x3: INT;						(*переменная для записи по сети*)
    	d:  REAL;						(*считанное значение*)
    	ptr_D:POINTER TO BYTE;
    
    	COM_SERVICE1: COM_SERVICE;
    	x_1: INT;
    
    	x4: INT;
    	x5: INT;
    	x6: INT;
    	x7: INT;
    	x8: INT;
    END_VAR
    --------------------------------
    IF port_opened=0 THEN
    		Settings.Port:=com_num;             
    		Settings.dwBaudRate:=19200;   
    		Settings.byParity:=0;
    		Settings.dwTimeout:=0;
    		Settings.byStopBits:=0;
    		Settings.dwBufferSize:=0;
    		Settings.dwScan:=0;
    END_IF
    
    COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK  );
    IF COM_SERVICE1.ready THEN
    	port_opened:=2;
    END_IF
    
    IF port_opened=2 THEN 
    
    get_modbus(
    
    	Mode:=MB_RTU ,		
    	DevAddr:=2 ,			
    	FirstAddr:=12 ,			
    	Quantity:=8 ,			
    	ComHandle:= Settings.Port,
    	TimeOut:=TimeOut  , 	
    	Buffer:=Buffer ,			
    	Complete=>get_modbus.Enable ,
    	Exception=>err ,			
    	ByteCnt=> DataSize);		
    IF get_modbus.Complete THEN
    	IF err=0 THEN 
    		x1:=BYTE_TO_WORD(BUFFER[4]) OR SHL(BYTE_TO_WORD(BUFFER[3]),8);
    		x2:=BYTE_TO_WORD(BUFFER[6]) OR SHL(BYTE_TO_WORD(BUFFER[5]),8);
    		x3:=BYTE_TO_WORD(BUFFER[8]) OR SHL(BYTE_TO_WORD(BUFFER[7]),8);
    		x4:=BYTE_TO_WORD(BUFFER[10]) OR SHL(BYTE_TO_WORD(BUFFER[9]),8);
    		x5:=BYTE_TO_WORD(BUFFER[12]) OR SHL(BYTE_TO_WORD(BUFFER[11]),8);
    		x6:=BYTE_TO_WORD(BUFFER[14]) OR SHL(BYTE_TO_WORD(BUFFER[13]),8);
    		x7:=BYTE_TO_WORD(BUFFER[16]) OR SHL(BYTE_TO_WORD(BUFFER[15]),8);
    		x8:=BYTE_TO_WORD(BUFFER[18]) OR SHL(BYTE_TO_WORD(BUFFER[17]),8);
    
    	END_IF
    END_IF
    
    END_IF


    не помогло. таже история ошибка 255 в конце. и да кстати enable один цикл крутится только.
    но в буфере только 15 байт и переменная количество байт показывает именно это число...

    библиотеку поправили, видимо с 2017 года, поскольку ф.б. enable сам переключается в disable.
    поэтому "Валенок" рекомендовал добавить Complete=>get_modbus.Enable , в код. перезапуск после завершения.

    PS. в общем я смотрю ни у кого нет на форуме вариантов где бы использовался запрос больше 2х регистров.
    походу эта библиотека не умеет больше 4 регистров получать.
    Дайте рабочий пример, если я ошибаюсь.
    Последний раз редактировалось Schneider; 28.05.2022 в 13:03.

  4. #4

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Либа рабочая и её авторам - спасибо. Код выше - рабочий.
    Я этой либой давно не пользуюсь, но сейчас её тупо попробывал и прочитал спокойно не 4, а 125 регистров. На 115200.
    понял, ок значит надо смотреть в сторону устройства, а может модбас сервера, которым я имитирую слейв устройство.

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Либа рабочая и её авторам - спасибо. Код выше - рабочий.
    Я этой либой давно не пользуюсь, но сейчас её тупо попробывал и прочитал спокойно не 4, а 125 регистров. На 115200.

    *
    спасибо большое, что откликнулись. но все же прошу выслать ваш проект в котором у вас работает одним запросом 125 регистров считывать.
    только через "сохранить/отправить архив" чтобы вместе с либами.(такой файл можно прикрепить на форуме)

    дело в том что я только что взял МВ110 и спокойно настроив в MasterOPC сервер (в винде) через адаптер usb-rs485 считал с нее сразу 8 регистров (это 16 байт) за один запрос
    но! подключив плк 73 к MB110 получаю такую же шляпу и обрезанными данными в буфере обмена и с ошибкой по таймауту. попробовал на второй порт rs485 подключить, не помогло.
    надо же все таки разобраться с этим чудом!

  6. #6

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    платка с 2-мя портами ?
    да, ну я поменял. там стояла плата только под MP1 выход. а сейчас + два 485 порта

  7. #7

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Выкладывайте свой проект
    сделал архив с либами, модбас либ скачана недавно с сайта owen так что должна быть последняя.
    задачу в цикле делал от 50 до 500 мс. как и таймауты разные. ничего не помогает.
    вроде RS-1 RS-2 говорят не надо настраивать, они в режиме слейв с контроллера работают вроде.
    посмотрите пожалуйста. что же я там не так сделал?

    PS. я вот думаю, может это интерфейсная плата в 73м такая глючная, может у нее буфер больше 15 байт хранить не умеет?
    а на другом плк, новее все работает.
    Вложения Вложения
    Последний раз редактировалось Schneider; 31.05.2022 в 07:21.

  8. #8

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    скачаю посмотрю - позже, или кто-то.
    пока : Какие задачи ? тасков напихали?
    каких? у меня всего одна задача
    2022-05-31_09-13-29.png
    можно конечно совсем удалить её и установить минимум и максимум
    2022-05-31_09-16-01.png
    и так пробовал , только минимум на 100 ставил. без разницы.

  9. #9

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Правильное решение. Накой задачи на 1-ядре ?

    Вот накой ? Дефолт. Даже не, просто 0
    а при чем здесь количество ядер? если мне не нужно чтобы задача выполнялась так часто, зачем же единственный процессор нагружать пустыми хлопотами?
    это как раз такой случай, мне вполне достаточно чтобы раз в секунду вообще выполнялась эта задача.
    а когда я по дефолту без менеджера задач оставляю 0 проц этой единственной задачей нагружается более 1000 раз в секунду.
    разве я не прав?
    PS. получилось понять, что у меня не так с опросами? жду с нетерпением вердикт...

  10. #10

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    goto пост 37
    Не понял, на что мне обратить внимание? Это же мой пост.

Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя

Похожие темы

  1. Чтение и запись в Universal Modbus device
    от super100 в разделе ПЛК1хх
    Ответов: 20
    Последнее сообщение: 30.10.2013, 12:18
  2. Адресация Universal Modbus device
    от super100 в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 04.10.2013, 13:05
  3. Universal device MODBUS ???
    от EFrol в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 17.01.2012, 09:43

Ваши права

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