delta DVP28SV2+овен мв110-224.1тд+тензодатчик

gallyamov_mm_91
Сообщения: 16
Зарегистрирован: 18 фев 2023, 12:27

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение gallyamov_mm_91 »

тут как раз таки стоит задача справиться без ОПС сервера. построить опрос через ПЛК.
спецификацию читал. пробовал следующим образом:
ushort[] holding_register = master.ReadHoldingRegisters(16, 4099, 4);

// Отображаем текст на форме
this.Invoke(new EventHandler(textBox1_TextChanged));
}
// Обновляем текст на форме
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.txtReceived.Text = master;
}
теперь столкнулся с ошибкой Ошибка CS0029 Не удается неявно преобразовать тип "Modbus.Device.ModbusSerialMaster" в "string".
пробовал BitConverter.ToString() но не помогает

pkl
Сообщения: 1359
Зарегистрирован: 23 ноя 2010, 10:08

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение pkl »

gallyamov_mm_91 писал(а):
15 мар 2023, 09:35
тут как раз таки стоит задача справиться без ОПС сервера. построить опрос через ПЛК.
Я вас не отговариваю. Просто предлагаю использовать ОПС для проверки связи с ПЛК.
В данный момент причин отсутствия чтения море. Начиная от вашего приложения, заканчивая проводами, протоколом, и т.д.
Наладите опрос ПЛК через ОПС, потом уже спокойно терзайте C#.

gallyamov_mm_91
Сообщения: 16
Зарегистрирован: 18 фев 2023, 12:27

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение gallyamov_mm_91 »

Связь с плк фиксируется же при подключение когда мы открываем порт, да и в самом ПЛК я вижу индикацию обмена по 232 интерфейсу

Олег
Сообщения: 744
Зарегистрирован: 18 янв 2011, 23:06

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение Олег »

Код: Выделить всё

holding_register = master.ReadHoldingRegisters(16, 4099, 4);
Нормально, поставьте точку останова в отладке и посмотрите что в массиве holding_register будет (должны быть значения регистров ответа от Дельты). Объёкт master на ASCII настроить не забыли? если RTU используете, тогда и Дельту на этот сорт протокола настроить нужно ( Модбас аски у Дельты по умолчанию) У вашей Дельты сетевой адрес точно 16? по умолчанию 1.

Код: Выделить всё

this.txtReceived.Text = master;
Вы точно умеете проги рисовать? с какого бодуна стрингу объект пытаетесь присвоить? В вашем случае нужно преобразовать массив holding_register в нужные вам значения.
--
nmodbus хорошая библиотека под Net.
ftp://ftp.icpdas.com/pub/cd/8000cd/napd ... dbus/demo/
тут есть хорошие примеры под неё

gallyamov_mm_91
Сообщения: 16
Зарегистрирован: 18 фев 2023, 12:27

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение gallyamov_mm_91 »

на данный момент программа практически готова. идет непрерывный опрос, данные идут единственное не устраивает формат данных.
когда я опрашиваю ОПС сервером один и тот же регистр (рис4) я могу указать в настройках тип данных. по умолчанию там идет INT16, когда я ставлю FLOAT я получаю данные в том виде как и должно быть(52.5206) как реализовать это в программе. пытался конвертировать но что то не выходит. может метод считывания другой выбрать
Вложения
WindowsFormsApp8.7z
(131 КБ) 0 скачиваний
4.jpg
4.jpg (29.56 КБ) 38 просмотров
3.jpg
3.jpg (44.39 КБ) 38 просмотров

gallyamov_mm_91
Сообщения: 16
Зарегистрирован: 18 фев 2023, 12:27

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение gallyamov_mm_91 »

using Modbus.Device;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp8
{
public partial class Form1 : Form
{
SerialPort port = new SerialPort();
private bool is_running = false;
public Form1()
{
InitializeComponent();
label1.Text = "Порт закрыт";
label2.Text = "опроса остановлен";
}

private void Form1_Load(object sender, EventArgs e)
{

}

// Открытие COM-порта
private void button1_Click(object sender, EventArgs e)
{
if (port.IsOpen == false)
{
port = new SerialPort("COM2", 9600, Parity.Even, 7, StopBits.One);
port.Open();
label1.Text = "Порт открыт";
}
}

// Закрытие COM-порта
private void button2_Click(object sender, EventArgs e)
{
if (port.IsOpen == true)
{
port.Close();
label1.Text = "Порт закрыт";
}
}

// Начало опроса
private void button3_Click(object sender, EventArgs e)
{
label2.Text = "опроса идет";
is_running = true;
ThreadPool.QueueUserWorkItem((useless) =>
{
while (is_running)
{
if (port.IsOpen == true)
{
ModbusSerialMaster master = ModbusSerialMaster.CreateAscii(port);
ushort startAddress = 4099; // Начальный адрес
ushort numInputs = 1; // Количество регистров для запроса
ushort[] inputs;
try
{
inputs = master.ReadHoldingRegisters(16, startAddress, numInputs);
}
catch (Exception ex)
{
textBox1.Text = ex.Message;
break;
}
foreach (ushort input in inputs)
{
this.Invoke((System.Action)(() =>
{
textBox1.Clear();
textBox1.Text += input.ToString() + "\t";
chart1.Series["Series1"].Points.Add(input);
}));
}
Thread.Sleep(1000);
}
}
});
}

// Остановка опроса
private void button4_Click(object sender, EventArgs e)
{
is_running = false;
textBox1.Clear();
label2.Text = "опроса остановлен";
}
}
}

pkl
Сообщения: 1359
Зарегистрирован: 23 ноя 2010, 10:08

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение pkl »

Команды преобразования типов в вашей среде программирования есть? Нужно просто преобразовать Int во Float. Имейте в виду, что Float 32 бита.
Вариант 2 произвести перестановку в вашей программе : 2.1 побайтно.( 8 бит) 2.2 - пословно ( 16 бит).

gallyamov_mm_91
Сообщения: 16
Зарегистрирован: 18 фев 2023, 12:27

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение gallyamov_mm_91 »

а можно не много по подробнее, я просто новичок в этом деле и пока не сильно понимаю

gallyamov_mm_91
Сообщения: 16
Зарегистрирован: 18 фев 2023, 12:27

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение gallyamov_mm_91 »

есть команды на подобии Convert.ToFloat. но это несовсем то что мне надо.
у меня на входе 16977 на выходе, в идеале должно стать 52,5206.
а при помощи Convert.ToFloat я из 16977 получаю 16977,0

pkl
Сообщения: 1359
Зарегистрирован: 23 ноя 2010, 10:08

Re: delta DVP28SV2+овен мв110-224.1тд+тензодатчик

Сообщение pkl »

Данные в ПЛК в каком формате?

Ответить