Страница 1008 из 1044 ПерваяПервая ... 8508908958998100610071008100910101018 ... ПоследняяПоследняя
Показано с 10,071 по 10,080 из 10436

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

  1. #10071

    По умолчанию

    Если что, код архивирования

    С русским проблема в кодсисе или на форуме)

    Код:
    	(*  Îòëàâëèâàòü è çàïèñûâàòü
    		 â retain îòêëþ÷åíèÿ è ïîäêëþ÷åíèÿ ôëåøêè  *)
    
    
    
    		(* ×òåíèå òåêóùèõ âðåìåíè è äàòû *)
    
    	TimeAndDate.Day:=0;
    	TimeAndDate.DayOfWeek:=0;
    	TimeAndDate.dwHighMsec:=0;
    	TimeAndDate.dwLowMSecs:=0;
    	TimeAndDate.Milliseconds:=0;
    	TimeAndDate.Minute:=0;
    	TimeAndDate.Second:=0;
    	TimeAndDate.Hour:=0;
    	TimeAndDate.Year:=0;
    	TimeAndDate.Month:=0;
    	Sys_time.ulHigh:=0;
    	Sys_time.ulLow:=0;
    
    	GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
    
    
    	IF today <> TimeAndDate.Day THEN		(*&#229;&#241;&#235;&#232; &#237;&#224;&#241;&#242;&#243;&#239;&#232;&#235; &#237;&#238;&#226;&#251;&#233; &#228;&#229;&#237;&#252;, &#242;&#238; &#244;&#238;&#240;&#236;&#232;&#240;&#243;&#229;&#236; &#237;&#238;&#226;&#251;&#233; &#244;&#224;&#233;&#235; &#241; &#237;&#238;&#226;&#251;&#236; &#232;&#236;&#229;&#237;&#229;&#236; &#228;&#224;&#242;&#251;*)
    		name_of_file:= CONCAT(pref , UINT_TO_STRING(TimeAndDate.Day));
    		name_of_file:= CONCAT(name_of_file , '.');
    		name_of_file:= CONCAT(name_of_file , UINT_TO_STRING(TimeAndDate.Month));
    		name_of_file:= CONCAT(name_of_file , '.');
    		name_of_file:= CONCAT(name_of_file , UINT_TO_STRING(TimeAndDate.Year));
    		name_of_file:= CONCAT(name_of_file , '.csv');
    		today:= TimeAndDate.Day;
    		need_new_header:= TRUE;	(*&#228;&#224;&#235;&#229;&#229; &#226; &#237;&#238;&#226;&#238;&#236; &#244;&#224;&#233;&#235;&#229; &#237;&#229;&#238;&#225;&#245;&#238;&#228;&#232;&#236;&#238; &#225;&#243;&#228;&#229;&#242; &#241;&#238;&#231;&#228;&#224;&#242;&#252; "&#248;&#224;&#239;&#234;&#243;" &#224;&#240;&#245;&#232;&#226;&#224;*)
    	END_IF
    
    	IF write_log = TRUE THEN
    		IF need_new_header THEN
    			header:= CONCAT( '', '&#196;&#224;&#242;&#224;');
    			header:= CONCAT( header, ';');
    			header:= CONCAT( header, '&#194;&#240;&#229;&#236;&#255;');
    			header:= CONCAT( header, ';');
    			header:= CONCAT( header, '$0A');
    		ELSE		(* &#200;&#237;&#224;&#247;&#229; &#228;&#238;&#231;&#224;&#239;&#232;&#241;&#251;&#226;&#224;&#229;&#236; &#226; (&#241;&#229;&#227;&#238;&#228;&#237;&#255;&#248;&#237;&#232;&#233;) &#244;&#224;&#233;&#235; *)
    			header:= CONCAT('' , UINT_TO_STRING(TimeAndDate.Day));
    			header:= CONCAT( header, '.');
    			header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Month));
    			header:= CONCAT( header, '.');
    			header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Year));
    			header:= CONCAT( header, ';');
    			header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Hour));
    			header:= CONCAT( header, ':');
    			header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Minute));
    			header:= CONCAT( header, ':');
    			header:= CONCAT(header , UINT_TO_STRING(TimeAndDate.Second));
    			header:= CONCAT( header, ';');
    				(* &#196;&#224;&#235;&#229;&#229; - &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#229; *)
    	
    			header:= CONCAT( header, ';');
    			header:= CONCAT( header, '$0A');
    		END_IF
    	END_IF		(* write_log = TRUE*)
    
    
    		(* &#215;&#197;&#202;&#192;&#210;&#220; USB &#239;&#238; &#242;&#224;&#233;&#236;&#229;&#240;&#243; &#224; &#237;&#229;
    				&#239;&#238;&#241;&#242;&#238;&#255;&#237;&#237;&#238; *)
    
    	IF usb_check_connection = TRUE THEN
    		(* &#207;&#240;&#238;&#226;&#229;&#240;&#234;&#224; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#229;&#237;&#232;&#255; &#239;&#238; USB *)
    		usb_connection:= GetUSBSerial(0, ADR(buf));
    		IF usb_connection = 0 THEN
    			 (*&#215;&#242;&#229;&#237;&#232;&#229; &#241;&#229;&#240;&#232;&#233;&#237;&#238;&#227;&#238; &#237;&#238;&#236;&#229;&#240;&#224; &#239;&#240;&#238;&#248;&#235;&#238; &#243;&#241;&#239;&#229;&#248;&#237;&#238;*)
    	(*		file_name:= 'usb:mylogfile.txt'; *)
    (*			file_st:= File_open_start; *)
    	
    			usb_check_connection:= FALSE;
    
    		ELSIF usb_connection = -1 THEN
    			;	(*  &#211;&#241;&#242;&#240;&#238;&#233;&#241;&#242;&#226;&#238; USB &#237;&#229; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#229;&#237;&#238;  *)
    		ELSIF usb_connection = -2 THEN
    			;	(*&#215;&#242;&#229;&#237;&#232;&#229; &#241;&#229;&#240;&#232;&#233;&#237;&#238;&#227;&#238; &#237;&#238;&#236;&#229;&#240;&#224; &#239;&#240;&#238;&#232;&#231;&#238;&#248;&#235;&#238; &#241; &#238;&#248;&#232;&#225;&#234;&#238;&#233;*)
    		END_IF
    	END_IF	(*    usb_check_connection = TRUE    *)
    
    
    	IF write_log = TRUE AND usb_check_connection = FALSE THEN
    		IF file_opened = FALSE THEN
    			file_st:= File_open_start;
    		ELSE
    			file_st:= File_write_start;
    		END_IF
    	END_IF
    
    
    	CASE file_st OF
    		File_lazy:
    			(* &#199;&#228;&#229;&#241;&#252; &#240;&#229;&#224;&#235;&#232;&#231;&#238;&#226;&#224;&#242;&#252;
    		&#239;&#229;&#240;&#232;&#238;&#228;&#232;&#247;&#229;&#241;&#234;&#232;&#229; &#239;&#238;&#239;&#251;&#242;&#234;&#232; &#238;&#242;&#234;&#240;&#251;&#242;&#252; USB &#239;&#238;&#240;&#242; &#239;&#238; &#242;&#224;&#233;&#236;&#229;&#240;&#243;*)
    			;
    		File_open_start:
    			res:= OwenFileOpenAsync(name_of_file, 'a', ADR(f_handle));
    			write_log:= FALSE;
    			IF res = ASYNC_WORKING THEN
    				file_st:= File_open_check;
    			END_IF
    		File_open_check:
    			res:= OwenFileOpenAsync(name_of_file, 'a', ADR(f_handle));
    			IF res = ASYNC_DONE THEN
    				IF f_handle <> 0 THEN
    					file_st:= File_write_start;
    					file_opened:= TRUE;
    				END_IF
    			END_IF
    		File_write_start:
    			res:= OwenFileWriteAsync( f_handle, ADR(header), LEN(header), ADR(wr_result));
    			write_log:= FALSE;
    			IF res = ASYNC_WORKING THEN
    				file_st:= File_write_check;
    			END_IF
    		File_write_check:
    			res:= OwenFileWriteAsync( f_handle, ADR(header), LEN(header), ADR(wr_result));
    			IF res = ASYNC_DONE THEN
    				IF wr_result = LEN(header) THEN
    					need_new_header:= FALSE;
    					file_st:= File_end;
    				END_IF
    			END_IF
    		File_end:
    
    			(*   &#205;&#192;&#228;&#238; &#231;&#224;&#234;&#240;&#251;&#226;&#224;&#242;&#252; &#244;&#224;&#233;&#235;?  *)
    
    			;
    	END_CASE

  2. #10072

    По умолчанию

    Цитата Сообщение от Millyvolt2 Посмотреть сообщение
    С русским проблема в кодсисе или на форуме)
    нет проблем, пробуйте:
    Код:
    (*это комментарий на русском*)
    
    (*раскладка клавиатуры ТОЛЬКО RU:
    1)при копировании кода с CDS; 
    2)при вставке этого кода в браузере.*)
    иначе получите:
    Код:
    (*&#253;&#242;&#238; &#234;&#238;&#236;&#236;&#229;&#237;&#242;&#224;&#240;&#232;&#233; &#237;&#224; &#240;&#243;&#241;&#241;&#234;&#238;&#236;*)
    
    (*&#240;&#224;&#241;&#234;&#235;&#224;&#228;&#234;&#224; &#234;&#235;&#224;&#226;&#232;&#224;&#242;&#243;&#240;&#251; &#210;&#206;&#203;&#220;&#202;&#206; RU:
    1)&#239;&#240;&#232; &#234;&#238;&#239;&#232;&#240;&#238;&#226;&#224;&#237;&#232;&#232; &#234;&#238;&#228;&#224; &#241; CDS; 
    2)&#239;&#240;&#232; &#226;&#241;&#242;&#224;&#226;&#234;&#229; &#253;&#242;&#238;&#227;&#238; &#234;&#238;&#228;&#224; &#226; &#225;&#240;&#224;&#243;&#231;&#229;&#240;&#229;.*)

  3. #10073

    По умолчанию

    Ладно, я понял, вопрос не для новичков.

    А если так: в чем может быть разница при запуске программы с ноутбука, подключенного по Ethernet к ПЛК110[М02] в режиме отладки и запуске ПЛК в режиме RUN?
    Последний раз редактировалось Millyvolt2; 01.11.2023 в 00:22.

  4. #10074

    По умолчанию

    Здравствуйте! Не могу понять почему функция P_izmer_pid := ROUND(P_izmer_pid, 2); работает не всегда.
    На скринах видно, что в какие то циклы значение округляется до 2 знаков после точки, а в некоторые бывает что не округляется, с чем это связано?
    Функция не лежит в условных операторах и выполняется при каждом цикле по идее.2023-11-01_09-28-20.png2023-11-01_09-23-42.png

  5. #10075

    По умолчанию

    Цитата Сообщение от Millyvolt2 Посмотреть сообщение
    Ладно, я понял, вопрос не для новичков.

    А если так: в чем может быть разница при запуске программы с ноутбука, подключенного по Ethernet к ПЛК110[М02] в режиме отладки и запуске ПЛК в режиме RUN?
    Разницы не должно быть, если она есть, возможно вы не создали загрузочный проект в ПЛК.

  6. #10076

    По умолчанию

    Цитата Сообщение от senkos Посмотреть сообщение
    Здравствуйте! Не могу понять почему функция P_izmer_pid := ROUND(P_izmer_pid, 2); работает не всегда.
    На скринах видно, что в какие то циклы значение округляется до 2 знаков после точки, а в некоторые бывает что не округляется, с чем это связано?
    Функция не лежит в условных операторах и выполняется при каждом цикле по идее.2023-11-01_09-28-20.png2023-11-01_09-23-42.png
    Думаю, что тут проблема не в округлении, а в самом числе REAL, таких косяков с ним довольно много.
    Советую округлять не в процессе расчёта, а уже при выводе на панель или визуализацию.
    Или попробуйте импортировать такой ФБ
    Вложения Вложения
    • Тип файла: rar FROUND.rar (448 байт, Просмотров: 2)
    Последний раз редактировалось kondor3000; 01.11.2023 в 10:56.

  7. #10077

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Разницы не должно быть, если она есть, возможно вы не создали загрузочный проект в ПЛК.
    я создаю загрузочный проект, у меня же всё остальное работает, при запуске ПЛК в режиме RUN

  8. #10078

    По умолчанию

    Добрый день!
    Имеется ПЛК110-24.32.Р-М и модуль аналоговых входов МВ210-101. Между собой ПЛК и модуль входов общаются по Modbus TCP, при этом ПЛК - master, а модуль - slave, если я правильно понимаю. Хочу получать и передавать данные на ПЛК с WinCC v7.5 через тот же Modbus TCP, но в этом случае ПЛК получается должен быть slave.
    Будет ли это работать, если в "Конфигурации ПЛК" одновременно добавить Modbus (master) и Modbus (slave)? Или мне нужен другой модуль входов (например, МВ110 с интерфейсом RS-485), который будет общаться с ПЛК по Modbus RTU (здесь ПЛК - master), а уже WinCC c ПЛК - по Modbus TCP (здесь ПЛК - slave)?

  9. #10079

    По умолчанию

    Цитата Сообщение от Иван Силкин Посмотреть сообщение
    Добрый день!
    Имеется ПЛК110-24.32.Р-М и модуль аналоговых входов МВ210-101. Между собой ПЛК и модуль входов общаются по Modbus TCP, при этом ПЛК - master, а модуль - slave, если я правильно понимаю. Хочу получать и передавать данные на ПЛК с WinCC v7.5 через тот же Modbus TCP, но в этом случае ПЛК получается должен быть slave.
    Будет ли это работать, если в "Конфигурации ПЛК" одновременно добавить Modbus (master) и Modbus (slave)? Или мне нужен другой модуль входов (например, МВ110 с интерфейсом RS-485), который будет общаться с ПЛК по Modbus RTU (здесь ПЛК - master), а уже WinCC c ПЛК - по Modbus TCP (здесь ПЛК - slave)?
    Добавить отдельно Мастер и слейв можно, если по ТСР слейв не будет работать по 502 порту, сделайте 503 порт.
    Переменные придётся скопировать из мастера в слейв с другими именами
    Последний раз редактировалось kondor3000; 01.11.2023 в 11:04.

  10. #10080

    По умолчанию

    Цитата Сообщение от Иван Силкин Посмотреть сообщение
    Добрый день!
    Имеется ПЛК110-24.32.Р-М и модуль аналоговых входов МВ210-101. Между собой ПЛК и модуль входов общаются по Modbus TCP, при этом ПЛК - master, а модуль - slave, если я правильно понимаю. Хочу получать и передавать данные на ПЛК с WinCC v7.5 через тот же Modbus TCP, но в этом случае ПЛК получается должен быть slave.
    Будет ли это работать, если в "Конфигурации ПЛК" одновременно добавить Modbus (master) и Modbus (slave)? Или мне нужен другой модуль входов (например, МВ110 с интерфейсом RS-485), который будет общаться с ПЛК по Modbus RTU (здесь ПЛК - master), а уже WinCC c ПЛК - по Modbus TCP (здесь ПЛК - slave)?
    Здравствуйте, да, ПЛК110 по сети ethernet может быть как мастером , так и слейвом одновременно. Вы можете подключить модуль и вашу программу к нему.
    Старший инженер группы технической поддержки

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

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

Ваши права

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