上位机MODBUS通信

2018-11-27 09:29

#include

#include #include #include

#define _AR_I386_AUTOMATION_STUDIO_ _LOCAL MBMOpen_typ MOpen;

_LOCAL MBMaster_typ Master; _LOCAL MBMClose_typ MClose; _LOCAL MBMCmd_typ MCmd;

_LOCAL BOOL fMOpen, fMaster, fMClose, fMCmd, execute;

_LOCAL USINT ascii;

_LOCAL UINT statusMOpen, statusMaster, statusMClose, statusMCmd,timeout,recordnum;

_LOCAL UINT order[14];/*éè??é?′??3Dò*/

_LOCAL UDINT ident, counter;

_LOCAL STRING device[32], mode[32], config[32], danwei[10];

/* modbus VAR */

_LOCAL BOOL LocalMB0[6], LocalMB1[5];

/*_LOCAL USINT data[150];*/ _LOCAL INT EventMB0, EventMB1, EventMB3, EventMB4, *pEventMB4, LocalMB3[5], LocalMB4[15], LocalA[6], *pLocalMB4;

_LOCAL INT LocaloMB4[15];

_LOCAL UINT i;

/*void ShunXu(void); */

_INIT void master_init (void) {

/* modbus VAR */

strcpy(&danwei[0], \ pEventMB4 = &EventMB4; pLocalMB4 = &LocalMB4[0];

EventMB0 = 1; EventMB1 = 1; EventMB3 = 1; EventMB4 = 1;

i = 0;

/* init for OPEN */

ascii = 0; /* 0 = RTU / 1 = ASCII */ #ifdef _AR_I386_AUTOMATION_STUDIO_ strcpy(&device[0], \

if (!ascii) strcpy(&mode[0], \ else strcpy(&mode[0], \ #else

strcpy(&device[0], \

if (!ascii) strcpy(&mode[0], \ else strcpy(&mode[0], \ #endif

strcpy(&config[0], \ timeout = 500;

for(i=0;i<14;i++) {

order[i]=i+1; }

/* modbus - Slave OPEN */ MOpen.enable = 1;

MOpen.pDevice = (UDINT) &device[0]; MOpen.pMode = (UDINT) &mode[0];

MOpen.pConfig = (UDINT) &config[0]; MOpen.timeout = timeout; MOpen.ascii = ascii; MBMOpen(&MOpen);

statusMOpen = MOpen.status;

if (!statusMOpen) ident = MOpen.ident; fMaster = 0;

fMCmd = 0; fMClose = 0; }

_CYCLIC void master_cyclic (void) {

if (fMOpen) {

/* modbus - Master OPEN */ MOpen.enable = 1;

#ifdef _AR_I386_AUTOMATION_STUDIO_ strcpy(&device[0], \ if (!ascii) strcpy(&mode[0], \

else strcpy(&mode[0], \ #else

strcpy(&device[0], \

if (!ascii) strcpy(&mode[0], \ else strcpy(&mode[0], \ #endif

MOpen.pDevice = (UDINT) &device[0]; MOpen.pMode = (UDINT) &mode[0];

MOpen.pConfig = (UDINT) &config[0]; MOpen.timeout = timeout; MOpen.ascii = ascii; MBMOpen(&MOpen);

statusMOpen = MOpen.status; if (!statusMOpen) {

ident = MOpen.ident; fMOpen = 0; fMaster = 0; fMCmd = 0; fMClose = 0; } else {

ident = 0; fMOpen = 0; } }

/*if (fMaster)

{*/

/* modbus - Master */ Master.enable = 1;

Master.ident = ident; MBMaster(&Master);

statusMaster = Master.status; execute = Master.execute; recordnum = Master.recordnum;

if (!statusMaster) {

fMaster = 1; counter++; }

else if (statusMaster == 65535) {

fMaster = 1; } else {

fMaster = 0; }

for(i=0;i<14;i++) {

LocaloMB4[i]=LocalMB4[order[i]-1]; } }

/*void ShunXu(void) {

if(a1==0||a1>=15) a1=1; if(a2==0||a2>=15) a2=2; if(a3==0||a3>=15) a3=3; if(a4==0||a4>=15) a4=4; if(a5==0||a5>=15) a5=5; if(a6==0||a6>=15) a6=6; if(a7==0||a7>=15) a7=7; if(a8==0||a8>=15) a8=8; if(a9==0||a9>=15) a9=9;

if(a10==0||a10>=15) a10=10; if(a11==0||a11>=15) a11=11; if(a12==0||a12>=15) a12=12; if(a13==0||a13>=15) a13=13;

if(a14==0||a14>=15) a14=14; }*/

_EXIT void slave_exit (void) {

MClose.enable = 1;

MClose.ident = ident; MBMClose(&MClose); }


上位机MODBUS通信.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:运动会秩序册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: