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 版权所有:亚洲城最新登录地址