厦门莫格电气自动化有限公司销售
ABB IMASO11/IMCIS22
欢迎来电咨询!
IMASO11/IMCIS22
IMASO11/IMCIS22
您迈开询价的一小步,我还您成功的一大步。
Modbus是工业控制器网络通信协议中***常用的协议之一,其通信采用主从方式,在同一个网络中有一个主设备及***多达255台从设备。工业上一般使用modbus RTU模式,以16进制传送数据,一个字节就是一帧,效率高于modbus ASCII模式。一个典型的modbus协议数据包由若干帧组成,如图3所示:

图3 modbus数据包格式
其中,第1帧为从机地址,第2帧为功能码,第3、4帧为主机欲访问的从机的起始寄存器地址,第5、6帧为要访问的寄存器个数,***后两帧为16位CRC校验码。对任何一个 ModBus协议数据包,其第 1、2帧及***后两帧的意义都是相同的,其他帧则根据功能码不同而有所区别。
英创提供的libmbu***aster.a库实现了modbus协议,支持常用功能码,详细介绍请查阅网站文章《ModBus通讯协议软件包》、《英创嵌入式Linux工控主板支持Modbus主控协议软件》、《Linux下的Modbus设备方协议软件介绍》。
下面就linux系统下,使用英创提供的libmbu***aster.a库文件进行模拟电流采集应用编程作简单介绍,更详细的过程请参考具体例程。
1、打开串口设备
sprintf( hostName, "ttyS3:9600-8-1-0");
hPort = mbu***aster_OpenPortProtocol( hostName );
2、设置modbus通信超时时间
i1 = mbu***aster_SetTimeout( hPort, 2000 );
printf( "SetTimeout:%d\n", i1 );
3、读取亚当模块转换结果寄存器,处理读取值
result = mbu***aster_ReadMultipleRegisters( hPort, moduleAddr, startAddr+channelStart,dataArr,channelCnt);
if (result == 0)
{
sampleCnt++;
printf("*****sample %d*****\n",sampleCnt);
for (i1 = 0; i1 < channelCnt; i1++)
{
value[i1] = CalculateCircuit(moduleID, dataArr[i1]);
printf("[%d]:\t%hd\t0x%04x\t%0.4f\n", i1 , dataArr[i1], dataArr[i1], value[i1]);
}
}
else
{
strcpy( str,mbu***aster_GetErrorText( result ) );
i1 = strlen( str );
if( i1>0 )
{
printf( "%s!\n", str );
}
}
其中,CalculateCircuit是根据不同模块的转换公式将读到的数值转换成对应的电流值。在使用mbu***aster_ReadMultipleRegisters读取寄存器值时,要参照各模块的手册,传递不同的寄存器映射地址。如果读取失败,可以通过mbu***aster_GetErrorText函数提示失败原因。
4、关闭串口设备
mbu***aster_ClosePortProtocol( hPort );
如果用户对4~20mA模拟电流采集应用方案感兴趣,可以联系我们。我们将提供表1所有的模块信息及程序示例。
3、总结
目前,市面上亚当模块(模拟数采模块)在价格、性能、通道数上有非常灵活的选择,单通道的亚当模块***低不到¥100元就能买到。综合我们的测试情况来看,主控部分使用英创主板,模拟数据采集部分使用市面上成熟的亚当模块,是工业上一种快速构建4~20mA模拟电流采集硬件平台的方案,并且具有很高的灵活性,能够满足用户的不同需求。此外,英创的libmbu***aster.a库文件实现了modbus协议的常用功能,用户只要简单的调用几个函数,就能完成软件上的编写,大大减少了整个产品的开发周期,降低了开发难度。因此,此方案具有简单、***、灵活、低成本的优势。
6ES5948-3UA11
6***6643-OBA01-1AXO
1336-BDB-SP30D
1336F-B100-AE-EN
1336-QOUT-SP13A
3BSE009616R1/TC505K03
SICLOCK TM 2XV9450-1AR00
P0916JP
1336-B100-AE-EN-L6
1336-BDB-SP30D
1336-QOUT-SP13A
SC902-001-01
IMDS014
5SDF0260D0001
HWS1500-24
AEC800-04-0440-3+E208+ON664+OH253
DSQC539
140CPU67160
P0916JP
SC902-001-01
FR-DU04
2711-T10G20L1
1606-XLS80E
1756-CNB
1756-ENBT
1756-L61
1756-PA72
P0916JP
140CRA93100
CU211
PS242
CPU725L
6FX1138-5BB04
HMCPJ250W5L
P0916JP
***P-E200-A C8451-A1-A191
***P-E208-A1 C8451-A12-A1
***P-E217 C8451-A12-A8-3
05146549-5501
4495
GX 550
EXTER T70
6SN1146-1BB02-0CA1
QT100
PS000电源
A06B-0856-B100
1756-CNB
1756-OB32
1768-ENBT
1769-OF8V
MPL-B320P-MJ22AA
1756-OW16I
1747-L532
2711-K5A3
6EW1810-3AA
UGRMEM-01SNQ12
MC-4/11/10/400
D4-32ND3-1
D4-DCM
1793-IE4S
P081000000GG(含电源IPM02)
P0914SV
P0926EQ
P0973JP
R2600D
1746-IB16
UGQMEM-01SNQ22
503956-62
DR2-04AC
IC200MDL940E
IC695ETM001
IC695PBM300
IC697ALG320
IC697BEM713
IC697BEM733
IC697MDL750
FW-V10-3.0K
57160001-AAA DSDI 110A
DSDO110 57160001-K
22D-D017N104
22F-D6PON103
22P-D142A103
P0916JP
8753ES
TC-FTEB01
1756-ENBT
2330
2330A
MSR138DP
AT-034-1024
A06B-0227-B101
A06B-0227-B101
B2600
3510
***B-600B
1775T-PMPP-1700
1C31129G03/1C31132G01
1C31224G01/1C31227G01
1C31234G01/1C31238H01
5X00070G04/1C31116G04
5X00119G01/5X00121G01
卡槽
UZBA-B
1771SC-0MI16
DSDP 150
ACS510-01-157A-4
DCS800-S01-1500-05
DCS800-S02-0025-04
DCS800-S02-0450-04
1756-PB72
57***04C
2711-K10C8
PCR-1820
140ACI03000
140ACO13000
140CPS11420
140CPU67160
140CRA93200
140CRP93200
140DDI84100
140DDO84300
140EHC20200
140NOE77101
140XBP00600
140XBP01600
140XTS00200
879DEX-G1
140CPU67160
7兆存储卡
UNITY PRO
ABL7RP2405
P0914SV
P0926EQ
P0973JP
PK564-NA-A33
PM450CLA120
3HAC033163-001
3HAC033182-001
3HAC033207-001
6***6643-0CD01-1AX1
6SL3255-0AA00-4BA1
IC693CPU374
A03B-0807-C154
KUAX 6801 V.24
ACS800-01-0025-3+P901
ACS800-01-0030-3+P901
ACS800-01-0040-3+P901
ACS800-01-0050-3+P901
HD22010-3
VI8345-2022421001
IC693ALG223
IC695CPU310
IC695LRE001
1771-IXE
IC693MDL655
6ES5318-8MB12
6ES5318-8MB13
140ARI03010
PCS100FZ
253B-1-40-1
31C110-503-4-00
610859-B21
1756-ENBT
1756-IB32
1756-L62
1756-OB32
A20B-8200-0545
5136-RE2-PCI
1756-IB16ISOE
1756-IF16
1756-IR6I/A
1756-L61