Показано с 1 по 10 из 10

Тема: ПЛК63 и RS485

  1. #1

    По умолчанию ПЛК63 и RS485

    Не могу связать ПЛК63 и измеритель мощности Ц301 по интерфейсу rs485
    Для написании программы использовал пример из документации которая шла с диском.
    Помогите примером работы с rs485 для ПЛК63

  2. #2

    По умолчанию

    Пожалуйста
    Вот пример (не полный) работы с ЧРП
    Код:
    PROGRAM InitComPort
    VAR
    	COM_SERVICE1: COM_SERVICE;
    END_VAR
    IF ComPortState = 0 THEN
    	Settings.Port:= 0; (*номер COM-порта*)
    	Settings.dwBaudRate:=9600; (*скорость*)
    	Settings.byParity:=0;
    	Settings.dwTimeout:=0;
    	Settings.byStopBits:=0;
    	Settings.dwBufferSize:=0;
    	Settings.dwScan:=0;
    END_IF
    
    IF ComPortState <> 2 THEN
    	(*Открываем COM-порт*)
    	COM_SERVICE1(Enable:=(ComPortState=0) , Settings:=Settings , Task:=OPEN_TSK );
    
    	(*Если COM-порт открыт, то переходим к приему и передачи данных *)
    	IF COM_SERVICE1.ready THEN
    		ComPortState:= 2;
    	END_IF
    END_IF
    Код:
    PROGRAM ExModbus
    VAR
    	SendModbus1: MB_RD_COILS;
    	SendModbus2: MB_WR_SNG_REG;
    	SendModbus3: MB_WR_SNG_COIL;
    	SendModbus4: MB_RD_HOLD_REGS;
    	SendModbus5: MB_WR_REGS;
    	ES: BOOL:= TRUE;
    	TimeOut: TIME:= T#150ms;
    	Buffer: ARRAY[0..255] OF BYTE;
    	ErrorSend1: ARRAY[1..4] OF BYTE;
    	ErrorSend2: ARRAY[1..4] OF BYTE;
    	ErrorSend3: ARRAY[1..4] OF BYTE;
    	ErrorSend4: BYTE;
    	ErrorSend5: BYTE;
    	Stage: BYTE:= 1;
    	EndSendStored: BOOL;
    	EndSendError: BOOL:= FALSE;
    	HavePause:TON;
    	SpeedTmp: DWORD;
    	Speed: WORD;
    	END_VAR
    
    IF ComPortState = 2 THEN
    	IF NOT EndSendStored THEN
    		CASE Stage OF
    			1:	SendModbus1(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 1,
    				FirstAddr:= 40,
    				Quantity:= 8,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout,
    				Buffer:= Buffer);
    				IF SendModbus1.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend1[1]:= SendModbus1.Exception;
    					IF ErrorSend1[1] = 0 THEN
    						AHU_CONT:= BYTE_TO_BOOL(Buffer[0] AND 8);
    					ELSE
    						AHU_CONT:= FALSE;
    						EndSendError:= TRUE;
    						Stage:= 4;
    					END_IF;
    				END_IF;
    			2: 	CASE FanSpeed OF
    					0: 	SpeedTmp:= (AHU_Speed1 - 25)*16#4000;
    					1:	SpeedTmp:= (AHU_Speed2 - 25)*16#4000;
    					2:	SpeedTmp:= (AHU_Speed3 - 25)*16#4000;
    				END_CASE;
    				Speed:= DWORD_TO_WORD(SpeedTmp / 75);
    				SendModbus2(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 1,
    				RegAddr:= 50009,
    				Value:= Speed,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout);
    				IF SendModbus2.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend2[1]:= SendModbus2.Exception;
    				END_IF;
    			3: 	SendModbus3(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 1,
    				CoilAddr:= 6,
    				Value:= AHU_START,
    				ComHandle:= Settings.Port,
    				TimeOut:= Timeout);
    				IF SendModbus3.Complete THEN
    					EndSendStored:=TRUE;
    					ErrorSend3[1]:= SendModbus3.Exception;
    				END_IF;
    			4: 	SendModbus1(
    				Enable:= ES,
    				Mode:= MB_RTU,
    				DevAddr:= 2,
    
    		END_CASE;
    		ES:= FALSE;
    	ELSE
    		IF EndSendError THEN
    			EndSendError:= FALSE;
    			ES:= TRUE;
    			EndSendStored:= FALSE;
    		ELSE
    			HavePause(IN:= EndSendStored,PT:=T#100ms);
    			IF HavePause.Q THEN
    				ES:= TRUE;
    				EndSendStored:= FALSE;
    				IF Stage >= 14 THEN
    					Stage:= 1;
    				ELSE
    					Stage:= Stage+1;
    				END_IF;
    			END_IF;
    		END_IF;
    	END_IF;
    	HavePause(IN:= EndSendStored,PT:=T#100ms);
    END_IF;

  3. #3

    По умолчанию

    Спасибо, попробую

  4. #4

    По умолчанию

    Подскажите пожалуйста, где можно найти описание библиотеки ComService.lib

  5. #5

    По умолчанию

    Эта библиотека состоит из одной функции.
    Посмотрите ее содержимое и параметр в library manager

  6. #6

    По умолчанию

    Ошибки:
    1. Если порт не откроется, то надо его закрыть и снова открыть. Иначе после первого же обновления в ходе отладки все перестанет работать.
    2.
    Два некогерентных условия:
    IF ComPortState = 0 THEN
    и
    IF ComPortState <> 2 THEN
    порт может открыться с непроинициализированными параметрами
    3.

    4: SendModbus1(
    Enable:= ES,
    Mode:= MB_RTU,
    DevAddr:= 2,
    - Мыши погрызли?

    END_CASE;

  7. #7

    По умолчанию

    1, 2, 3. Ну почему. Этот POU выполняется по сути 1 или 2 раза при запуске ПЛК. А ПЛК63 по сути всегда выполняет холодный старт при обновлении программы (?)
    4. Угу. Компьютерные 3-хмерные.
    Идея понятна. Концовка показывает, что в цикле 14 обращений к MODBUS. Есть смысл указывать все?
    Последний раз редактировалось ASo; 08.10.2011 в 15:24.

  8. #8

    По умолчанию

    Один, не один - должно быть правильно. Даже если в конкретный момент код и работает из-за side-эффектов, то завтра его перенесут на другой ПЛК и возникнут никому не нужные проблемы в "работающем" коде.

  9. #9

    По умолчанию

    Всем большое спасибо,хорошо что есть такой форум

  10. #10

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Ошибки:
    1. Если порт не откроется, то надо его закрыть и снова открыть. Иначе после первого же обновления в ходе отладки все перестанет работать.
    А как именно надо определять условие того, что порт не открылся или после обновления в ходе отладки всё перестало работать?
    Что необходимо мониторить?

Похожие темы

  1. СИ-8 RS485
    от afsh в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 04.04.2011, 13:45
  2. плк 110 + сп 270 + чп по Rs485
    от Wanted в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 21.04.2010, 11:06
  3. Usb-rs485
    от Bobilnik в разделе Эксплуатация
    Ответов: 13
    Последнее сообщение: 25.03.2009, 12:02
  4. RS485 в ПЛК
    от Сергей71 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 23.03.2008, 23:35
  5. Rs485
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 17.03.2008, 10:56

Ваши права

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