亚洲城最新登录地址-亚洲城游戏登录入口

语言版本 |
网站首页 新闻动态 产品中心 资料下载 解决方案 服务与支持 关于亚洲城游戏登录入口
新闻动态
欢迎您的来访!
您现在的位置:亚洲城最新登录地址 > 新闻动态 > > 企业新闻
新闻动态
Column sorting
2012年9月发布MXModbusCommunicator V1.0.0二次开发库
2012-09-27 08:00:00

MIKOM PLC产品PC组态开发库MXModbusCommunicator V1.0.0 已发布,请下载附件。
1、开发库构成
MXModbusCommunicator.dll
MXModbusCommunicator.lib
MXModbusCommunicator.h
2、开发库使用说明

以下代码演示了使用 MXModbusCommunicator 开发包进行程序开发的使用过程。

涉及的所有文件,均在 SDK 目录中。

//////////////////////////////////////////////////////////////////////

#include "stdio.h"

#include "../include/MXModbusCommunicator.h"
#pragma comment( lib, "MXModbusCommunicator.lib")


// 定义一个实例的句柄,每个实例可以访问一个串口
HANDLE hModbus_ = NULL;

void ReadValue()
{
 // 基本通讯参数结构定义
 ModbusCommandBasicParameter_struct basic;
 
 // 以一维数组形式定义的读元件名称
 ModbusElementAddress_struct elements[] = { "D0", "D1", "D1", "D2" };

 // 读元件函数使用的结构体,作为输入值
 Modbus_ReadElements_In_struct ins;

 // 读元件函数使用的结构体,作为返回值
 Modbus_ReadElements_Out_struct result;
 EnumCommResult comm_result; // 命令执行的结果
 
 UINT i;

 memset( &basic, 0, sizeof basic);
 basic.is_asynchronous = 0; // 设置为同步方式读取
 basic.device_ID = 1; // 设置机号为 1
 basic.life = 1; // 重发1 次命令

 ins.mi = MI_DWORD; // 对元件以 DWORD 的形式读取
 ins.pelements = &elements[0]; // 设置元件地址
 ins.number_of_elements = sizeof elements/sizeof *elements; // 设置元件个数

 /////////////////
 // 读取元件值
 comm_result = Modbus_ReadElements( hModbus_, &basic, &ins, &result);

 if ( comm_result == ECR_SUCCESSED )
 {
  for( i = 0; i < result.number_of_elements; ++ i )
  {
   printf( "\t%s = ", result.pelements[i].element_name);
   
   if ( result.mi == MI_BIT )
   {
    if ( result.pelements[i].value != 0 )
     printf("ON");
    else
     printf("OFF");
   }
   else if ( result.mi == MI_WORD )
   {
    printf( "%u (0x%04X)", result.pelements[i].value, result.pelements[i].value);
   }
   else if ( result.mi == MI_DWORD )
   {
    printf( "%u (0x%08X)", result.pelements[i].value, result.pelements[i].value);
   }

   printf( "\n");
  }

  //////////////////////////////////////////////////////////////////////////
  // 注意,需要删除这个 Buffer,因为程序库何时需要删除这些数据
  Modbus_DeAllocateBuffer(result.pelements);
 }
}


int main(int argc, char* argv[])
{
 
 CommConfigInfo_struct config;

 // 建立一个 modbus 访问接口
 hModbus_ = Modbus_CreateInterface();

 // 设置通讯参数 /////////////////////////////////////
 config.port = 1;
 config.baudrate = 19200;
 config.parity = NOPARITY;
 config.data_bits = 8;
 config.stop_bits = 2;

 Modbus_SetConfiguration(hModbus_, &config);

//////////////////////////
 // 设置通讯库支持的模块类型和版本号
 Modbus_SetModuleName(hModbus_, MODULE_PLCMX10 );

 // 建立通讯连接
 Modbus_Open(hModbus_);

 ///////////////////////////////
 // 读取 PLC 中寄存器的值
 ReadValue();
 ////////////////////////////////////////

 // 关闭通讯
 Modbus_Close(hModbus_);

 // 销毁 建立的 modbus 访问接口
 Modbus_DestroyInterface(hModbus_);
 
 system( "pause" );

 return 0;
}


鲁ICP备17036186号-1 版权所有:亚洲城最新登录地址