raven_2022
-
Posts
5 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by raven_2022
-
-
всем добрый день!
мне тут коллеги подтянули пример:
судя по комментариям - из тех, что поставляется на компакт-диске вместе с устройствами МОХА
если у кого похожая проблема - велкам:
Цитатаusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;using MOXA_CSharp_MXIO;
namespace WinFormsApp211
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}private void button1_Click(object sender, EventArgs e)
{
const UInt16 DO_DIRECTION_DO_MODE = 0;UInt16 Port = 502;
int ret;
Int32[] hConnection = new Int32[1];string IPAddr = "192.168.91.42";
//string Password = "";
string Password = "root1234";UInt32 Timeout = 5000;
UInt32 i;
UInt16 wIndex;
UInt32 uiGetInput = 0;{
ret = MXIO_CS.MXEIO_Init();
// Console.WriteLine("MXEIO_E1K_Connect IP={0}, Timeout={1}, Password={2}", IPAddr, Timeout, Password);
ret = MXIO_CS.MXEIO_E1K_Connect(System.Text.Encoding.UTF8.GetBytes(IPAddr), Port, Timeout, hConnection, System.Text.Encoding.UTF8.GetBytes(Password));byte[] bytCheckStatus = new byte[1];
ret = MXIO_CS.MXEIO_CheckConnection(hConnection[0], Timeout, bytCheckStatus);
byte bytCount = 0, bytStartChannel = 0;//Get DIO Direction Status
UInt16[] wGetDOMode = new UInt16[4]; //Get DO Direction Mode
UInt16[] wSetDO_DOMode = new UInt16[2]; //Set DO Direction DO Mode
UInt16[] wSetDO_PulseMode = new UInt16[2]; //Set DO Direction Pulse Mode
UInt16[] wGetDIMode = new UInt16[8]; //Get DI Direction Mode
UInt16[] wSetDI_DIMode = new UInt16[4]; //Set DI Direction DI Mode
UInt16[] wSetDI_CounterMode = new UInt16[4];//Set DI Direction Counter Mode
UInt16 wDI_DI_MODE = 0; //DI Direction DI Mode Value
UInt16 wDO_DO_MODE = 0; //DO Direction DO Mode ValueInt32 dwShiftValue;
bytCount = 2;
bytStartChannel = 0;bytCount = 2;
bytStartChannel = 0;
for (i = 0; i < bytCount; i++)
wSetDO_DOMode[i] = DO_DIRECTION_DO_MODE;
ret = MXIO_CS.E1K_DO_SetModes(hConnection[0], bytStartChannel, bytCount, wSetDO_DOMode);bytCount = 2;
bytStartChannel = 0;
ret = MXIO_CS.E1K_DO_GetModes(hConnection[0], bytStartChannel, bytCount, wSetDO_DOMode);UInt32 dwSetDOValue = 0x0003;
ret = MXIO_CS.E1K_DO_Writes(hConnection[0], bytStartChannel, bytCount, dwSetDOValue);bytCount = 2;
bytStartChannel = 0;
UInt32[] dwGetDOValue = new UInt32[1];
ret = MXIO_CS.E1K_DO_Reads(hConnection[0], bytStartChannel, bytCount, dwGetDOValue);ret = MXIO_CS.MXEIO_Disconnect(hConnection[0]);
MXIO_CS.MXEIO_Exit();
}
}private void button2_Click(object sender, EventArgs e)
{const UInt16 DO_DIRECTION_DO_MODE = 0;
UInt16 Port = 502;
int ret;
Int32[] hConnection = new Int32[1];string IPAddr = "192.168.91.42";
//string Password = "";
string Password = "root1234";
UInt32 Timeout = 5000;
UInt32 i;
UInt16 wIndex;
UInt32 uiGetInput = 0;{
ret = MXIO_CS.MXEIO_Init();
// Console.WriteLine("MXEIO_E1K_Connect IP={0}, Timeout={1}, Password={2}", IPAddr, Timeout, Password);
ret = MXIO_CS.MXEIO_E1K_Connect(System.Text.Encoding.UTF8.GetBytes(IPAddr), Port, Timeout, hConnection, System.Text.Encoding.UTF8.GetBytes(Password));byte[] bytCheckStatus = new byte[1];
ret = MXIO_CS.MXEIO_CheckConnection(hConnection[0], Timeout, bytCheckStatus);
byte bytCount = 0, bytStartChannel = 0;
//Get DIO Direction Status
UInt16[] wGetDOMode = new UInt16[4]; //Get DO Direction Mode
UInt16[] wSetDO_DOMode = new UInt16[2]; //Set DO Direction DO Mode
UInt16[] wSetDO_PulseMode = new UInt16[2]; //Set DO Direction Pulse Mode
UInt16[] wGetDIMode = new UInt16[8]; //Get DI Direction Mode
UInt16[] wSetDI_DIMode = new UInt16[4]; //Set DI Direction DI Mode
UInt16[] wSetDI_CounterMode = new UInt16[4];//Set DI Direction Counter Mode
UInt16 wDI_DI_MODE = 0; //DI Direction DI Mode Value
UInt16 wDO_DO_MODE = 0; //DO Direction DO Mode ValueInt32 dwShiftValue;
bytCount = 2;
bytStartChannel = 0;bytCount = 2;
bytStartChannel = 0;
for (i = 0; i < bytCount; i++)
wSetDO_DOMode[i] = DO_DIRECTION_DO_MODE;
ret = MXIO_CS.E1K_DO_SetModes(hConnection[0], bytStartChannel, bytCount, wSetDO_DOMode);bytCount = 2;
bytStartChannel = 0;
ret = MXIO_CS.E1K_DO_GetModes(hConnection[0], bytStartChannel, bytCount, wSetDO_DOMode);UInt32 dwSetDOValue = 0x0000;
ret = MXIO_CS.E1K_DO_Writes(hConnection[0], bytStartChannel, bytCount, dwSetDOValue);bytCount = 2;
bytStartChannel = 0;
UInt32[] dwGetDOValue = new UInt32[1];
ret = MXIO_CS.E1K_DO_Reads(hConnection[0], bytStartChannel, bytCount, dwGetDOValue);ret = MXIO_CS.MXEIO_Disconnect(hConnection[0]);
MXIO_CS.MXEIO_Exit();
}
}}
}
еще нужна библиотека MXIO_NET.dll версия 1,10,0,0 но уж очень здоровая. если можно, добавьте ссылку на скачивание
-
поскольку доступ по сети - скорее всего - TCP/IP
-
Цитата
Добрый день! А какой пример ожидается? Запись нужного регистра по Modbus? Или что?
здравствуйте!
мое руководство специализируется на программировании в MS SQL
оно изложило задачу так:
подключиться к устройству (контроллер МОХА1242 ) по известному ip-адресу/логину/паролю!
записать в первый регистр 1 - есть ток, лампочка горит
записать в то же регистр 0 - тока нет
отключиться от устройства.
-
всем добрый день!
после 10 лет работы с MS SQL Srv/C#/Ms Office перебросили на МОХА.
чтобы понять, что и как, нужно подключиться к контроллеру МОХА 1242 подать команду (зажечь лампочку)
подать 2-ю команду (выключить лампочку) и отключиться.
в общем, аналог "Hello, world!"
нужна ссылка на пример.
дальше - разберусь сам.
заранее спасибо
Соединение с МОХА1242 из C# и подача команды на регистр
in Программное обеспечение
Posted
и снова, здравствуйте!
вопрос. для определенности - private void button1_Click(object sender, EventArgs e)
где в коде задается № порта МОХа, на которые подается сигнал?
и какие допустимые значения для данной переменной?
заранее спасибо