#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); }