Просмотр полной версии : Программа чтения данных контролера по IP
Сделал программу на C# которая считывает из нужной папки xml файл, в файле указан ip, порт, регистры и соотв. тип регистров Int или float(чтобы читать потоком или по 2 для float). Можно указать, что этот регистр считывать или нет. По этой структуре xml файла программа автоматически создает SQLite базу на локальном диске C: и с периодичностью опять же указанной в xml филе опрашивает IP и ведет запись в базу. Файл сделан консолькой, т.е. данные пишутся потоком в базу, на экране отображение отработало соединение или нет и конечно лог в текстовый файл. Опрашивает до 350 регистров за раз. Могу выложить EXE файл, у меня нет возможности оттестировать в разных режимах. Единственное ограничение сделаю триальной.
Выложите EXE-файл, пожалуйста.
Не совсем понятно - регистр это вроде про модбас. А он по 350 регистров за раз ?! Макс - 125, но вполне 60..65Гц пишется/читается. Ничего себе база расти будет ))
можно за раз, а можно только конкретные указывать, ради экономии трафика. доделаю инструкцию как пользоваться выложу.
можно за раз
Т.е. Вы настолько уверены в этом, что уже второй раз делаете заявку что можно передать 350 регистров за раз и Вас не смущает что в протоколе на поле количество байт данных отведен только один байт, это другими словами туда можно вписать максимальное значение 256, если перевести на регистры то получится в одной посылке 128 слов
Филоненко Владислав
03.05.2016, 10:36
на самом деле ещё меньше
ф.3,4 - 125рег, ф.16 - 123рег. Все нормально с этим, но это - макс. за раз
А может ТС гетвей подломил ?
А может ТС гетвей подломил ?
больше похоже, что человек решил распространить какую нибудь малварь. Кроме нестыковок в формате, вызывает недоумение об отсутствии возможности самостоятельно протестировать
Могу выложить EXE файл, у меня нет возможности оттестировать в разных режимах. Единственное ограничение сделаю триальной.еще понимаю когда была бы прога для работы с последовательными портами и влом на одном единственном ПК устанавливать прогу эмулирующу работу пары СОМ-портов, но ТСР есть масса слейвов, специально для тестирования всех режимов
больше похоже, что человек решил распространить какую нибудь малварь. Кроме нестыковок в формате, вызывает недоумение об отсутствии возможности самостоятельно протестироватьеще понимаю когда была бы прога для работы с последовательными портами и влом на одном единственном ПК устанавливать прогу эмулирующу работу пары СОМ-портов, но ТСР есть масса слейвов, специально для тестирования всех режимов
нет никаких не стыковок, можно хоть тысячу налепить. Узнать сперва сколько регистров на устройстве, а потом последовательно опрашивать порциями. Тем более я конкретно написал, что для тестирования exe файл будет. Программа на конкретный заказ, но оттестировать мне никак в разных вариациях. Т.к делаю сам, то конкретный частный случай уже оттестирован, работает без ошибок, но уже вижу, что могут быть разные варианты, которые могут привести к ошибке, но мне их не сымитировать. Программа сделана, чтобы знать как вело себя устройство во времени. Разбираюсь неплохо в C# и SQL базах, вот и решил сделать.
Внутри файл описание. сомневающимся просьба запускать файл в песочнице антивируса или на виртуальной машине. Забыл дописать что нужно установить framework 4.5
Разбираюсь неплохо в C#Начните с Console.ReadKey() вместо while (true) {} в конце Main() и не открывайте базу на каждое срабатывание таймера - это всё бесполезная загрузка системы. Ключ DES смешной. Предположение о существовании диска C: и о наличии доступа к нему тоже вызывают умиление. Триал - рано, если о деньгах думаете. За изобретение ставлю пять, а по предмету - неуд.
У меня простой вопрос, а нафига нужна платная программа чтения регистров при наличии бесплатных или необходимости использования OPC серверов ?
ключ des ради экономии времени, так проще. триал не ради тех кто тестирует, а есть конкретные согласования, что должно присутствовать. существование c: опять же так проще. Отличие этой программы от OPC что она может работать полностью без участия человека, кинуть сюда IP и порт, получить обратно кол-во регистров, послать xml с описанием что читать и программа сама создает базу и сама пишет данные. прислали еще IP и опять программа сама делает новую базу и опять пишет данные. Все в автоматическом режиме. Человек только получает данные или графики. SQLite локальная для отладки системы, далее будет замена на другую. За плечами более 10 лет работы с разными базами и программированием. Modbus для меня в новинку, поэтому и сложности. while (true) {} в конце Main() не используется. загрузка системы настолько незначительна, что брать в расчет это при срабатывании таймера не нужно. Плюс если адресов IP несколько, придется открывать базы на срабатывание таймера. Представим - открыл первую базу (она занята) теперь пишем данные, каждый раз надо ExecuteNonQuery() , т.е. надо открыть сессию для записи, далее в цикле открываем другой IP и так далее. Плюс надо учитывать lock базы при одновременном чтении и записи базы. Принимается любая критика, но только конструктивная.
Kostennikov
06.05.2016, 15:05
если вы не знаете кол-во регистров и адреса то как вы их прочитаете, а если программа будет все их перебирать. а если сразу десятка два. и то что вы описывете как минимум каждый опрос в отдельном потоке и отдельный коннект к базе данных и шарп вам этого не простит если у вас не многопроцессорный пк и если вы не пишете под многопроцессорный пк. этож рихнуться на каждый плк по потоку да еще и по коннекту к бд. да еще и с одной машины. Бд может и выдержит а вот машина свашей програмкой будет безбожно висеть. (Лично проверял ради интереса).
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot