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

Тема: Настройка связи старой СПК207 с WinCC

  1. #1

    По умолчанию Настройка связи старой СПК207 с WinCC

    Здравствуйте. Имеется контроллер СПК207 с подключенными по модбасу модулями МВ110-224.8А. Требуется вывести показания с этих модулей на визуализацию WinCC.

    Сама СПК207-220.03.00.CS-WEB 2013 года выпуска. Версия:OWEN-20120817-2531 plc240web. Модули тех же годов (старая серия).

    В Codesys v3.5 SP5 Patch5 создаю новый стандартный проект, выбираю там мою модель СПК, добавляю пустую визуализацию. По умолчанию таргет 3.5.4.26 не подходит, меняю его на Owen spc2xx-03.cs-web 3.5.0.40.
    Для связи с модулями добавляю устройство Modbus COM 3.4.0.0, в него добавляю Modbus Master COM Port 3.4.0.0, в него уже свои модули Modbus Slave COM Port 3.4.0.0.
    Для связи с WinCC добавляю устройство Ethernet 3.4.2.0, в которое добавляю ModbusTCP Slave Device 3.4.1.10.

    Настройка самих устройств сейчас не важна, поскольку что с ними, что без них проект в контроллер загружается, но с двумя ошибками:
    [ERROR] iodrvmodbus, 3.5.4.0 (3s - smart software solutions gmbh): Менеджер библиотек: Невозможно открыть библиотеку '#IoDrvModbusBase'. (Причина: Невозможно разрешить библиотеку заполнителя 'IoDrvModbusBase'.)
    [ERROR] iodrvmodbus, 3.5.4.0 (3s - smart software solutions gmbh): Менеджер библиотек: Невозможно открыть библиотеку '#CAA Device Diagnosis'. (Причина: Невозможно разрешить библиотеку заполнителя 'CAA Device Diagnosis'.)

    Добавляю в проект вручную требуемые библиотеки, но связь с модулями, ровно как и с WinCC не появляется.
    Spk207ModbusErr1.png

  2. #2

  3. #3

    По умолчанию

    Значит, после добавления в проект библиотек ComService_3.1.0.compiled-library и Modbus(3.1.0).compiled-library, с последующей настройкой проекта как указано в пункте 5.4 мануала SPK_Modbus_v.1.1.pdf связь с аналоговыми модулями появилась.
    Но только по порту COM2. При подключении модулей по порту COM3 опроса не происходит.
    В чем может быть причина?

    В общем виде код программы работы с модбасом выглядит так:
    Код:
    Код:
    PROGRAM COM2
    VAR
    	COM_Service_COM2: COM_SERVICE; // ФБ настройки и открытия порта COM2
    	
    	MV110_8A: MB_RD_HOLD_REGS; // ФБ опроса модуля МВ110-8А
    
    	abyBuffer: ARRAY [0..255] OF BYTE; // Буфер ФБ опроса модуля МВ110-8А
    	abyMV110_8A_data: ARRAY [0..255] OF BYTE; // Буфер данных, считанных с модуля МВ110-8А
    	
    	MV110_8A_1_InputsArr: ARRAY [0..7] OF REAL; // Показание входа модуля МВ110-8А
    	MV110_8A_1_InputsStatusArr: ARRAY [0..7] OF WORD; // Код ошибки измерения входа
    	MV110_8A_1_InputsStatusTextArr: ARRAY [0..7] OF WSTRING; // Cтатус измерения входа
    
    	_2WORD_TO_REAL: Word_Real; // Экземпляр объединия для преобразования двух WORD в REAL
    	
    	InputsCounter: INT;
    	NumCurrModule: INT;
    END_VAR
    VAR CONSTANT
    	InputsShift: INT := 12; // Из мануала к модулю
    	
    	EmptyRealInputsArr: ARRAY [0..7] OF REAL := [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
    END_VAR
    Код:
    COM_Service_COM2
    (
    	Enable := TRUE,
    	Task := OPEN_TSK,
    );
    COM_Service_COM2.Settings.sPort		:= 3;
    COM_Service_COM2.Settings.byStopBits	:= 1;
    COM_Service_COM2.Settings.byParity	:= 0;
    COM_Service_COM2.Settings.ulBaudrate	:= 9600;
    COM_Service_COM2.Settings.ulTimeout	:= 0;
    COM_Service_COM2.Settings.ulBufferSize	:= 0;
    COM_Service_COM2.sets_ex.byByteSize	:= 8;
    
    
    MV110_8A
    (
    	Enable := COM_Service_COM2.Ready,
    	Mode := MB_RTU,
    	DevAddr := 1,
    	FirstAddr := 2,
    	Quantity := 45,
    	ComHandle := COM_Service_COM2.handle,
    	TimeOut := T#1000MS,
    	Buffer := abyBuffer,
    );
    
    IF MV110_8A.Complete THEN
    	IF MV110_8A.Exception = 0 THEN
    		abyMV110_8A_data := abyBuffer;
    		FOR InputsCounter := 0 TO 7 DO
    			MV110_8A_1_InputsStatusArr[InputsCounter] := BYTE_TO_WORD(abyMV110_8A_data[1 + InputsCounter * InputsShift]) OR SHL(BYTE_TO_WORD(abyMV110_8A_data[0 + InputsCounter * InputsShift]),8);
    			MV110_8A_1_InputsStatusTextArr[InputsCounter] := Mx110Assistant.MvStatusToWstring(MV110_8A_1_InputsStatusArr[InputsCounter]);
    			IF MV110_8A_1_InputsStatusArr[InputsCounter] = 0 THEN
    				_2WORD_TO_REAL.abyBytes[3] := abyMV110_8A_data[4 + InputsCounter * InputsShift];
    				_2WORD_TO_REAL.abyBytes[2] := abyMV110_8A_data[5 + InputsCounter * InputsShift];
    				_2WORD_TO_REAL.abyBytes[1] := abyMV110_8A_data[6 + InputsCounter * InputsShift];
    				_2WORD_TO_REAL.abyBytes[0] := abyMV110_8A_data[7 + InputsCounter * InputsShift];
    				
    				MV110_8A_1_InputsArr[InputsCounter] := _2WORD_TO_REAL.rReal;
    			ELSE
    				MV110_8A_1_InputsArr[InputsCounter] := 0.0;
    			END_IF
    		END_FOR;
    	END_IF
    	MV110_8A(Enable := FALSE, Buffer := abyBuffer);
    END_IF
    Последний раз редактировалось SatanaXIII; 07.05.2024 в 16:18. Причина: Добавление кода

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,262

    По умолчанию

    Цитата Сообщение от SatanaXIII Посмотреть сообщение
    Значит, после добавления в проект библиотек ComService_3.1.0.compiled-library и Modbus(3.1.0).compiled-library, с последующей настройкой проекта как указано в пункте 5.4 мануала SPK_Modbus_v.1.1.pdf связь с аналоговыми модулями появилась.
    Но только по порту COM2. При подключении модулей по порту COM3 опроса не происходит.
    В чем может быть причина?

    В общем виде код программы работы с модбасом выглядит так:
    Код:
    Код:
    PROGRAM COM2
    VAR
    	COM_Service_COM2: COM_SERVICE; // ФБ настройки и открытия порта COM2
    	
    	MV110_8A: MB_RD_HOLD_REGS; // ФБ опроса модуля МВ110-8А
    
    	abyBuffer: ARRAY [0..255] OF BYTE; // Буфер ФБ опроса модуля МВ110-8А
    	abyMV110_8A_data: ARRAY [0..255] OF BYTE; // Буфер данных, считанных с модуля МВ110-8А
    	
    	MV110_8A_1_InputsArr: ARRAY [0..7] OF REAL; // Показание входа модуля МВ110-8А
    	MV110_8A_1_InputsStatusArr: ARRAY [0..7] OF WORD; // Код ошибки измерения входа
    	MV110_8A_1_InputsStatusTextArr: ARRAY [0..7] OF WSTRING; // Cтатус измерения входа
    
    	_2WORD_TO_REAL: Word_Real; // Экземпляр объединия для преобразования двух WORD в REAL
    	
    	InputsCounter: INT;
    	NumCurrModule: INT;
    END_VAR
    VAR CONSTANT
    	InputsShift: INT := 12; // Из мануала к модулю
    	
    	EmptyRealInputsArr: ARRAY [0..7] OF REAL := [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
    END_VAR
    Код:
    COM_Service_COM2
    (
    	Enable := TRUE,
    	Task := OPEN_TSK,
    );
    COM_Service_COM2.Settings.sPort		:= 3;
    COM_Service_COM2.Settings.byStopBits	:= 1;
    COM_Service_COM2.Settings.byParity	:= 0;
    COM_Service_COM2.Settings.ulBaudrate	:= 9600;
    COM_Service_COM2.Settings.ulTimeout	:= 0;
    COM_Service_COM2.Settings.ulBufferSize	:= 0;
    COM_Service_COM2.sets_ex.byByteSize	:= 8;
    
    
    MV110_8A
    (
    	Enable := COM_Service_COM2.Ready,
    	Mode := MB_RTU,
    	DevAddr := 1,
    	FirstAddr := 2,
    	Quantity := 45,
    	ComHandle := COM_Service_COM2.handle,
    	TimeOut := T#1000MS,
    	Buffer := abyBuffer,
    );
    
    IF MV110_8A.Complete THEN
    	IF MV110_8A.Exception = 0 THEN
    		abyMV110_8A_data := abyBuffer;
    		FOR InputsCounter := 0 TO 7 DO
    			MV110_8A_1_InputsStatusArr[InputsCounter] := BYTE_TO_WORD(abyMV110_8A_data[1 + InputsCounter * InputsShift]) OR SHL(BYTE_TO_WORD(abyMV110_8A_data[0 + InputsCounter * InputsShift]),8);
    			MV110_8A_1_InputsStatusTextArr[InputsCounter] := Mx110Assistant.MvStatusToWstring(MV110_8A_1_InputsStatusArr[InputsCounter]);
    			IF MV110_8A_1_InputsStatusArr[InputsCounter] = 0 THEN
    				_2WORD_TO_REAL.abyBytes[3] := abyMV110_8A_data[4 + InputsCounter * InputsShift];
    				_2WORD_TO_REAL.abyBytes[2] := abyMV110_8A_data[5 + InputsCounter * InputsShift];
    				_2WORD_TO_REAL.abyBytes[1] := abyMV110_8A_data[6 + InputsCounter * InputsShift];
    				_2WORD_TO_REAL.abyBytes[0] := abyMV110_8A_data[7 + InputsCounter * InputsShift];
    				
    				MV110_8A_1_InputsArr[InputsCounter] := _2WORD_TO_REAL.rReal;
    			ELSE
    				MV110_8A_1_InputsArr[InputsCounter] := 0.0;
    			END_IF
    		END_FOR;
    	END_IF
    	MV110_8A(Enable := FALSE, Buffer := abyBuffer);
    END_IF
    Добрый день.
    Вы портом COM2 называете тот, который на корпусе прибора гравируется как COM2 или тот, которому в CODESYS соответствует ID = 2?

  5. #5

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Вы портом COM2 называете тот, который на корпусе прибора гравируется как COM2 или тот, которому в CODESYS соответствует ID = 2?
    На корпусе прибора.

    При подключении модуля к порту с надписью на корпусе COM2, в программе я указываю ID=3.
    При подключении модуля к порту с надписью на корпусе COM3, в программе я указываю ID=4

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,262

    По умолчанию

    Цитата Сообщение от SatanaXIII Посмотреть сообщение
    На корпусе прибора.

    При подключении модуля к порту с надписью на корпусе COM2, в программе я указываю ID=3.
    При подключении модуля к порту с надписью на корпусе COM3, в программе я указываю ID=4
    Для тестирования вы используете один и тот же код, меняя в нем номер порта?

  7. #7

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Для тестирования вы используете один и тот же код, меняя в нем номер порта?
    Нет. В проекте две программы, обрабатываемые двумя своими задачами. Код в них одинаковый. За исключением номера порта.

    Удалил из программы вообще обработку COM2. Оставил только одну программу. Меняю в ней ID с 3 на 4 и ничего не происходит. При ID=3 связь есть, при ID=4 отсутствует.

    Но намек понял. Погляжу еще завтра с утра.
    Последний раз редактировалось SatanaXIII; 07.05.2024 в 17:04.

  8. #8

Похожие темы

  1. Проблема связи с СПК207
    от Doomers в разделе СПК2хх
    Ответов: 35
    Последнее сообщение: 29.01.2023, 17:24
  2. СПК207+WinCC
    от RZH в разделе СПК2хх
    Ответов: 1
    Последнее сообщение: 25.07.2016, 09:45
  3. Настройка связи между ТРМ138 и WinCC 7
    от Vankan в разделе Другие SCADA системы
    Ответов: 2
    Последнее сообщение: 15.11.2010, 15:19
  4. Проблема связи WinCC + CoDeSys OPC Server
    от kraftway в разделе Другие SCADA системы
    Ответов: 6
    Последнее сообщение: 17.12.2009, 10:34
  5. Проблема связи WinCC + CoDeSys OPC Server
    от kraftway в разделе Master SCADA 3
    Ответов: 6
    Последнее сообщение: 17.12.2009, 10:34

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

Ваши права

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