Modbus-RTU主机控件的简单测试

By admin at 2020-03-16 • 0人收藏 • 344人看过

其实modbus如果只是在pc上作为主机使用的话, 完全用不着使用啥dll, 直接利用串口sio,加上之前我分享的crc16检验程序, 就可以完成软件了。

网上也有一些人封装好的modbus控件,利用这些控件就可以不用管modbus协议是个啥了


下面是找的网上的一个modbus控件,进行了简单的测试

image.png

右边的串口助手模拟一个站号为1的从机, 左边是调用的modbus组件程序,用01功能码读取1个状态位.

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=304;bottom=215)
winform.add(
button2={cls="button";text="读取线圈1";left=60;top=56;right=266;bottom=138;z=1}
)
/*}}*/

import console
console.open()

var mdObj = com.CreateObject("ModbusActiveX.Modbus")
//波特率
mdObj.BaudRate = 5
//串口端口
mdObj.CommPort = 2
//数据位
mdObj.DataBit = 1
//奇偶校验
mdObj.Parity = 0
//停止位
mdObj.StopBit = 0
//超时时间
mdObj.RespondTimeOut = 3000
//开启
mdObj.OpenPort()
//关联接收事件
com.Connect(mdObj,{
    //举一个事件例子1
    FC01ReadCoilStatusRespond0X  = function(TransactionID,CommStatus,CommError,CoilsOnOff,CoilsCount){
    	mdObj.FC01ReadCoilStatusRespond0X(TransactionID,CommStatus,CommError,CoilsOnOff,CoilsCount);
    };
	//...还有好几个事件, 不写了,参考上面那个,复制黏贴
});
//使用事件1
mdObj.FC01ReadCoilStatusRespond0X= function(TransactionID,CommStatus,CommError,CoilsOnOff,CoilsCount){
	console.dump(TransactionID,CommStatus,CommError,CoilsOnOff,CoilsCount)
}

winform.button2.oncommand = function(id,event){
    //主机读取站号为1的从机,起始地址0,读取长度1
	console.log(mdObj.FC01_ReadCoilStatus_0X(1,0,1))
}

winform.onClose = function(hwnd,message,wParam,lParam){
    //释放
    mdObj.ClosePort()
}

winform.show();
win.loopMessage();

总体来说,如果只是作为主机使用, 那么强烈建议自己用sio库来写,如果实在不懂modbus是个啥的话,用这种傻瓜式的方式也蛮好。

ModbusActiveX控件V203.zip


1 个回复 | 最后更新于 2020-03-16
2020-03-16   #1
//枚举定义开始 ModbusActiveX.Modbus;

EnumBaudRate={
BPS__28800=8;
BPS__14400=6;
BPS__38400=9;
BPS____110=0;
BPS__57600=10;
BPS__19200=7;
BPS_256000=12;
BPS____600=2;
BPS___1200=3;
BPS___2400=4;
BPS_128000=11;
BPS____300=1;
BPS___9600=5
};
EnumCommPort={
COM41=41;
COM1=1;
COM57=57;
COM31=31;
COM37=37;
COM10=10;
COM36=36;
COM2=2;
COM49=49;
COM62=62;
COM35=35;
COM3=3;
COM4=4;
COM14=14;
COM45=45;
COM5=5;
COM19=19;
COM48=48;
COM7=7;
COM22=22;
COM8=8;
COM27=27;
COM56=56;
COM59=59;
COM16=16;
COM55=55;
COM60=60;
COM47=47;
COM18=18;
COM43=43;
COM9=9;
COM11=11;
COM12=12;
COM13=13;
COM20=20;
COM30=30;
COM15=15;
COM46=46;
COM52=52;
COM58=58;
COM17=17;
COM33=33;
COM53=53;
COM34=34;
COM40=40;
COM51=51;
COM44=44;
COM39=39;
COM6=6;
COM21=21;
COM23=23;
COM25=25;
COM24=24;
COM26=26;
COM28=28;
COM29=29;
COM32=32;
COM64=64;
COM38=38;
COM63=63;
COM50=50;
COM54=54;
COM61=61;
COM42=42
};
EnumParity={
Odd=1;
None=0;
Even=2
};
EnumStopBit={
StopBit_2=1;
StopBit_1=0
};
EnumDataBit={
DataBit_7=0;
DataBit_8=1
}
//枚举定义结束 ModbusActiveX.Modbus;

它里面的一些常量

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...