Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 39

Тема: ПЛК160 и тайм-ауты Modbus Slave TCP

  1. #21

    По умолчанию

    Скриншот конфигуратора, если это может помочь.
    Они однотипны в той части, которую не видно на скриншотах.
    Изображения Изображения

  2. #22

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    смутили не слова, а дела и поступки. Писали что на Го кодили, но ни чего не выложили, видимо не созрели для него, питоновский скрипт тоже написан новичком, не вникающим в детали, хотите чтоб поверил Вашим словам что с сетями у Вас все хорошо, фактов нет чтобы верить. Решили быкануть, варитесь сами в собственных проблемах
    Что мне выкладывать? Весь проект, который есть или что? Сколько людей пишет на питоне, тем более которые есть тут в работе с ПЛК. Зато скриптики на питоне всем понятны, вот и взял БАЗОВЫЙ скрипт, как и писал в том сообщения где выкладывал и все. Какие дела? Мне рассказать как сеть устроена? Как траффик гуляет, где какие правила или что? Адреса разные, и находятся физически ПЛК в разных местах. Клиент на ГО я использую уже в более 20 разных проектах и везде все хорошо, а вот ПЛК и тем более ОВЕН сам использую в первый раз, потому и пришел за советом. У меня было скорее предположение, что косяк в либо в ПЛК, либо в ньюансах кодинга.

    Я решил быкануть? Это вы делаете выводы, а не спрашиваете. Зачем убеждать человека ЗА меня, где есть косяк? Есть сомнение, можно спросить или подсказать.
    Давайте подумаем, знаете ли вы, что если есть коллизия IP адресов в одном броадкаст домене, то роутеры блокируют такие пакеты на N секунд на момент перестроения arp таблиц, а следовательно будут потери пакетов, чуть выше я вам скинул скриншот с выборкой за 12 часов, где нету пропадания пакетов от слова совсем.

  3. #23

    По умолчанию

    Выдержка из кода на GO если это реально так может помочь...

    Код:
    const (
    	modbusPollingTimeout     = 50 * time.Millisecond
    	modbusFailRetryCount     = 20
    	modbusHandlerTimeout     = 3 * time.Second
    	modbusHandlerIDLETimeout = 20 * time.Second
    	modbusPLCSlaveId         = 5
    )
    
    
    func NewTCPModbusHandler(ipAddress string) *modbus.TCPClientHandler {
    	var modbusHandler *modbus.TCPClientHandler
    	modbusHandler = modbus.NewTCPClientHandler(ipAddress)
    
    	errConnect := modbusHandler.Connect()
    	if errConnect != nil {
    		//fmt.Println("ErrConnectModbusHandler to ", ipAddress, ": ", errConnect)
    	}
    	defer modbusHandler.Close()
    
    	return modbusHandler
    }
    
    
    func ReadPLCConfiguration(segmentId int) PLCConfiguration {
    	myHandler := NewTCPModbusHandler("10." + strconv.Itoa(segmentId) + ".10.5:502")
    	myHandler.SlaveId = modbusPLCSlaveId
    	myHandler.Timeout = modbusHandlerTimeout
    	myHandler.IdleTimeout = modbusHandlerIDLETimeout
    	client := modbus.NewClient(myHandler)
    
    	var err error
    	var readParam []byte
    	count := 1
    
    	readParam, err = client.ReadInputRegisters(19, 15)
    	for i := 0; i <= modbusFailRetryCount; i++ {
    		if err != nil {
    			count++
    			time.Sleep(modbusPollingTimeout)
    			readParam, err = client.ReadInputRegisters(19, 15)
    		}
    	}
    
    	fmt.Println("PLCConfig requests after ", count, " retries.")
    
    	myHandler.Close()
    
    	plcConf := PLCConfig[segmentId-1]
    
    	if err == nil {
    		s := reflect.ValueOf(&plcConf).Elem()
    
    		for i := 0; i < s.NumField()-1; i++ {
    			f := s.Field(i)
    			var temp_byte []byte
    
    			startIndex := 0
    			if i > 0 {
    				startIndex = i * 2
    			}
    			endIndex := startIndex + 1
    			temp_byte = append(temp_byte, readParam[startIndex])
    			temp_byte = append(temp_byte, readParam[endIndex])
    			temp_value := binary.BigEndian.Uint16(temp_byte)
    			f.SetUint(uint64(temp_value))
    		}
    		plcConf.LastUpdated = time.Now()
    	}
    
    	return plcConf
    }

  4. #24

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    то что я удаляю посты, не значит что я не спрашивал Вас ни о чем.
    Меня заинтересовало стойкое желание Валенка обвинить клиента в проблемах, я поменял его точку зрения, крайний раз он начал придерживаться термина верхний уровень, не конкретизируя что клиент. Когда я предложил в питоне добавлять всё же адрес слейва, в Вашем коде на Го почему SlaveId равен пяти а не единице?
    Когда проверка была на Python, была залита урезанная версия софта для на ПЛК для проверки если вдруг не хватает ресурсов. Там был slave1 в продуктиве 5. Проблема в том, что косяк соединения с ПЛК и тут не совсем это важно какой адрес слейва указан. Разница будет только в ответе. в одном случае придут данные, в другом будет ошибка некорректного пакета.
    И всегда в обоих случаях сыпятся таймауты так же. Предложение добавить адрес было логичным, я проверил и его на всякий случай, хотя мало верил в успех.
    В целом если уже говорить о моих ошибках, то там есть еще одна ошибка, а именно я пытался читать койлы с кодом 01, когда как мне нужны входные регистры. Опять же, ошибка будет в ответе, то есть я увижу ошибки протокола, а не таймаут.

    Цитата Сообщение от capzap Посмотреть сообщение
    По сетям я тоже задавал вопросы, получил от Вас какой то скрин, какого то пакета, где там написано что это 12 часов работы не разбираюсь видимо, да был еще вырезка пинга из 48 посылок. То что я в одном из постов решил что адрес контроллера начинается с 10, а ПК со 172, это мне пришло в голову потому что по умолчанию овеновские контроллеры с 10-ти идут. Но по дампу получается что источником отправки пакетав таком случае является плк а приемником ПК
    Я же приложил скриншот с заббикса где проходит пинг до ПЛК. Сеть большая и контроллеры правда находятся в сегменте с 10м адресом не стандартным.
    Если честно про дамп не совсем понял. Там есть первый пакет
    ПК с которого я веду тест отправляет запрос SYN на открытие TCP сессию на ПЛК Овен, в ответ получает пакет RST, соотвественно стандартная настройка стека TCP пытается сделать повтор еще 2 раза, но так же получает RST после чего вываливается ошибка.

    Цитата Сообщение от capzap Посмотреть сообщение
    Я задал вопрос и про сам плк, не пойму зачем тогда раззоряться что Вы хотите помощи если выкладываете какие то миниатюрные вырезки ни на что не влияющие, понимаю впервые сталкиваетесь с овеном, поэтому эти скрины не нужны, либо сделайте скрин полного экрана и в режиме онлайн, чтоб было видно что не в эмуляции и что действительно на то время в конфигурации именно то что в проекте. Напомню что залитая программа держиться в ОЗУ и при выключении питания стирается, если не сделать загрузочный проект. Дополнительно, не плохо бы зайти в ПЛК-браузер и выложить вывод команды PLCInfo

    Сделать скриншот, что это реально ПЛК не проблема. Во вложении. Я вообще изначально хотел выложить целиком скриншот, но форум сказал, что я пытаюсь вложить слишком большой файл, вот и приходится их подрезать.
    Изображения Изображения

  5. #25

    По умолчанию

    За совет кстати про RAM и загрузочный проект спасибо, правда мне бы его 2 недели назад, когда я не мог понять, что за фигня происходит. Сам случайно натыкал, разобрался с этим делом.

    Еще вывод с другого PLCInfo со второго контроллера ( именно его IP я использовал для тестов тут

    Код:
    PLCInfo
    PLC model MODEL PLC 160 
    Binary  VERSION 1.0.11 
    Need Target version >= 3.12 
    Compiled: 10:25:23 Nov  5 2019 
    STM32 binary version 114
    MAC E4:1E:0A:00:5A:DF 
    IP 10.2.10.5
    GATE 10.2.10.1
    MASK 255.255.255.0
    Последний раз редактировалось gOsToFf; 26.03.2020 в 19:49.

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

    По умолчанию

    Проблема в том, что косяк соединения с ПЛК и тут не совсем это важно какой адрес слейва указан
    ну как не важен, вот два скрина с указанием ID и без
    Изображения Изображения
    • Тип файла: png owen.png (217.7 Кб, Просмотров: 11)
    • Тип файла: png owen1.png (120.6 Кб, Просмотров: 7)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  7. #27

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    не кажется ли что это уже второй плк с таким же адресом?
    Человек косяк нажывается, выкладывал быстро, забыл нажать кнопку Enter поесле переподключения.

    Код:
    PLCInfo
    PLC model MODEL PLC 160 
    Binary  VERSION 1.0.11 
    Need Target version >= 3.12 
    Compiled: 10:25:23 Nov  5 2019 
    STM32 binary version 114
    MAC E4:1E:0A:00:54:11 
    IP 10.1.10.5
    GATE 10.1.10.1
    MASK 255.255.255.0
    Если бы он был с таким же адресом, у меня бы ничего не работало на нем. Там совсем другая подсеть, совсем на другом маршрутизаторе. Именно по этой причине, я писал о невозможности.
    А косяк, того что это один и тот же ПЛК, можно просмотреть по MAC адресу.

  8. #28

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    откуда это понятно? Если в 31 посте скрины с другого плк и на него не жалуются, то я не вижу что за прога в данный момент в плк с адресом 10.1.10.5 и говорить что он не виноват не стал бы. Пинг говорит что до него можно достучаться, это ни как не объясняет наличие сервера модбас или какой то другой проблемы
    Жалусюь на оба, к сожалению косяк на обоих. Очень не хватает низкоуровнего дебага на ПЛК, чтобы разобрать проблему.
    Кстати, банальный telnet на 502 порт так же не всегда отрабатывает ( просто зависает на соединении ), а иногда отрабатывает очеень долго и реже моментально. Именно просто на коннект. Так что не думаю, что есть смысл разбирать софт, который его опрашивает. Есть смысл разбираться в софте ПЛК наверно.

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

    По умолчанию

    в сети плк есть кому показать таблицу маршрутов, роутер точно по первому адресу и всё такое
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  10. #30

    По умолчанию

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

    ЗЫ и вообще я бы не с катушек начал, а с регистров хранения
    Очень логично. Если это замечение по поводу загрузочного проекта, то оно логично. Но я сейчас не ношу никуда ПЛК, он стоит на своем месте постоянно.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 04.06.2019, 16:55
  2. ПЛК160(Master)+МВВ+ПЛК160(slave), по Modbus RTU
    от NikolaevV в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 16.05.2019, 18:07
  3. ПЛК160(ModbusMaster)+СП307(Slave) = односторонняя связь
    от Stab в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 14.10.2016, 06:24
  4. ПЛК160: Modbus TCP Master и Modbus TCP Slave одновременно.
    от Антон Костюченко в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 18.07.2016, 10:36
  5. Убийство флеш памяти ПЛК160 LectusOPC ModbusTCP-SLave
    от gtdd1962 в разделе OPC Серверы
    Ответов: 5
    Последнее сообщение: 14.01.2016, 14:17

Ваши права

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