Commit c364fd83 authored by Pavel Vainerman's avatar Pavel Vainerman

Доделал предварительную версию uniset-smemory-plus

parent cdd7d9ea
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
<sensors name="Sensors"> <sensors name="Sensors">
<item db_ignore="1" default="1" id="1" iotype="DI" name="Input1_S" priority="Medium" textname="Команда 1"/> <item db_ignore="1" default="1" id="1" iotype="DI" name="Input1_S" priority="Medium" textname="Команда 1"/>
<item id="2" iotype="DI" mbaddr="0x01" mbfunc="0x04" mbreg="0x02" mbtype="rtu" name="Input2_S" priority="Medium" rs="2" textname="Команда 2"/> <item id="2" iotype="DI" mbaddr="0x01" mbfunc="0x04" mbreg="0x02" mbtype="rtu" name="Input2_S" priority="Medium" rs="2" textname="Команда 2"/>
<item id="3" iotype="DI" mbtcp="1" mbtcp_mbaddr="0x02" mbtcp_mbfunc="0x03" mbtcp_mbreg="0x02" mbtcp_mbtype="rtu" mbtcp_preinit="1" name="Input3_S" priority="Medium" textname="Команда 3"/> <item id="3" iotype="DI" mbtcp="1" mbtcp_mbaddr="0x02" mbtcp_mbfunc="0x03" mbtcp_mbreg="0x02" mbtcp_mbtype="rtu" name="Input3_S" priority="Medium" textname="Команда 3"/>
<item id="4" iotype="DI" mbaddr="0x02" mbfunc="0x04" mbreg="0x02" mbtype="rtu" name="Input4_S" priority="Medium" rs="2" textname="Команда 4"/> <item id="4" iotype="DI" mbaddr="0x02" mbfunc="0x04" mbreg="0x02" mbtype="rtu" name="Input4_S" priority="Medium" rs="2" textname="Команда 4"/>
<item id="5" iotype="DI" name="Input5_S" priority="Medium" textname="Команда 5" udp="2"/> <item id="5" iotype="DI" name="Input5_S" priority="Medium" textname="Команда 5" udp="2"/>
<item id="6" iotype="DI" name="Input6_S" priority="Medium" textname="Команда 6" udp="2"> <item id="6" iotype="DI" name="Input6_S" priority="Medium" textname="Команда 6" udp="2">
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
<consumer name="PLCProcessor" type="objects"/> <consumer name="PLCProcessor" type="objects"/>
</consumers> </consumers>
</item> </item>
<item id="30044" iotype="DI" name="DI1_S" priority="Medium" rs="1" rs_mbaddr="0x01" rs_mbfunc="0x02" rs_mbreg="30044" rs_mbtype="rtu" textname="Test DI sensor"/> <item id="30044" iotype="DI" depend="AlarmFuse2_AS" depend_value="3" name="DI1_S" priority="Medium" rs="1" rs_mbaddr="0x01" rs_mbfunc="0x02" rs_mbreg="30044" rs_mbtype="rtu" textname="Test DI sensor"/>
<item id="30045" iotype="DI" name="DI2_S" priority="Medium" rs="1" rs_mbaddr="0x01" rs_mbfunc="0x02" rs_mbreg="30045" rs_mbtype="rtu" textname="Test DI sensor"/> <item id="30045" iotype="DI" name="DI2_S" priority="Medium" rs="1" rs_mbaddr="0x01" rs_mbfunc="0x02" rs_mbreg="30045" rs_mbtype="rtu" textname="Test DI sensor"/>
<item id="13" iotype="DI" name="Threshold1_S" priority="Medium" textname="Порог"/> <item id="13" iotype="DI" name="Threshold1_S" priority="Medium" textname="Порог"/>
<item id="14" iotype="DI" name="TestMode_S" priority="Medium" textname="test"/> <item id="14" iotype="DI" name="TestMode_S" priority="Medium" textname="test"/>
......
bin_PROGRAMS = @PACKAGE@-smemory-plus bin_PROGRAMS = @PACKAGE@-smemory-plus
@PACKAGE@_smemory_plus_LDADD = $(top_builddir)/lib/libUniSet.la \ @PACKAGE@_smemory_plus_LDADD = $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/RTUExchange/libUniSetRTU.la \ $(top_builddir)/extensions/UNetUDP/libUniSetUNetUDP.la \
$(top_builddir)/extensions/ModbusMaster/libUniSetMBTCPMaster.la \
$(top_builddir)/extensions/ModbusMaster/libUniSetRTU.la \
$(top_builddir)/extensions/ModbusSlave/libUniSetMBSlave.la \ $(top_builddir)/extensions/ModbusSlave/libUniSetMBSlave.la \
$(top_builddir)/extensions/IOControl/libUniSetIOControl.la \ $(top_builddir)/extensions/IOControl/libUniSetIOControl.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \ $(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \
...@@ -9,7 +11,8 @@ bin_PROGRAMS = @PACKAGE@-smemory-plus ...@@ -9,7 +11,8 @@ bin_PROGRAMS = @PACKAGE@-smemory-plus
$(SIGC_LIBS) $(SIGC_LIBS)
@PACKAGE@_smemory_plus_CXXFLAGS = -I$(top_builddir)/extensions/CanNetwork \ @PACKAGE@_smemory_plus_CXXFLAGS = -I$(top_builddir)/extensions/CanNetwork \
-I$(top_builddir)/extensions/RTUExchange \ -I$(top_builddir)/extensions/UNetUDP \
-I$(top_builddir)/extensions/ModbusMaster \
-I$(top_builddir)/extensions/ModbusSlave \ -I$(top_builddir)/extensions/ModbusSlave \
-I$(top_builddir)/extensions/IOControl \ -I$(top_builddir)/extensions/IOControl \
-I$(top_builddir)/extensions/SharedMemory \ -I$(top_builddir)/extensions/SharedMemory \
......
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <string> #include <string>
#include "Debug.h" #include <sys/wait.h>
#include "ObjectsActivator.h" #include <Debug.h>
#include "SharedMemory.h" #include <ObjectsActivator.h>
#include <ThreadCreator.h>
#include "Extensions.h" #include "Extensions.h"
#include "IOControl.h"
#include "RTUExchange.h" #include "RTUExchange.h"
#include "MBSlave.h" #include "MBSlave.h"
#include "MBTCPMaster.h"
#include "SharedMemory.h"
#include "IOControl.h"
//#include "UniExchange.h"
#include "UNetExchange.h"
#include "Configuration.h"
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
using namespace std; using namespace std;
using namespace UniSetTypes; using namespace UniSetTypes;
using namespace UniSetExtensions; using namespace UniSetExtensions;
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
static void help_print( int argc, char* argv[] ); static void help_print( int argc, const char* argv[] );
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
int main( int argc, char **argv ) int main( int argc, const char **argv )
{ {
if( argc>1 && strcmp(argv[1],"--help")==0 ) if( argc>1 && strcmp(argv[1],"--help")==0 )
{ {
help_print( argc, argv); help_print( argc, argv);
return 0; return 0;
} }
bool add_io = findArgParam("--add-io",argc,argv)!=-1 ? true : false; bool add_io = findArgParam("--add-io",argc,argv) != -1;
bool add_rtu = findArgParam("--add-rtu",argc,argv)!=-1 ? true : false; bool add_rtu = findArgParam("--add-rtu",argc,argv) != -1;
bool add_mbslave = findArgParam("--add-mbslave",argc,argv)!=-1 ? true : false; bool add_rtu2 = findArgParam("--add-rtu2",argc,argv) != -1;
bool add_mbslave = findArgParam("--add-mbslave",argc,argv) != -1;
bool add_io2 = findArgParam("--add-io2",argc,argv) != -1;
bool add_mbmaster = findArgParam("--add-mbmaster",argc,argv) != -1;
bool add_mbmaster2 = findArgParam("--add-mbmaster2",argc,argv) != -1;
bool add_mbmaster3 = findArgParam("--add-mbmaster3",argc,argv) != -1;
//bool add_uniexchange = findArgParam("--add-unet",argc,argv) != -1;
//bool add_uniexchange2 = findArgParam("--add-unet2",argc,argv) != -1;
bool add_unetudp = findArgParam("--add-unetudp",argc,argv) != -1;
bool add_mbtcp_ses1 = findArgParam("--add-mbtcp-ses1",argc,argv) != -1;
bool add_mbtcp_ses2 = findArgParam("--add-mbtcp-ses2",argc,argv) != -1;
bool add_mbtcp_ses3 = findArgParam("--add-mbtcp-ses3",argc,argv) != -1;
bool add_mbtcp_ses4 = findArgParam("--add-mbtcp-ses4",argc,argv) != -1;
try try
{ {
string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" ); string confile = UniSetTypes::getArgParam( "--confile", argc, argv, "configure.xml" );
conf = new Configuration(argc, argv, confile); conf = new Configuration(argc, argv, confile);
string logfilename = conf->getArgParam("--logfile", "smemory-plus.log"); string logfilename = conf->getArgParam("--logfile", "smemory2.log");
string logname( conf->getLogDir() + logfilename ); string logname( conf->getLogDir() + logfilename );
UniSetExtensions::dlog.logFile( logname );
unideb.logFile( logname ); unideb.logFile( logname );
conf->initDebug(UniSetExtensions::dlog,"dlog");
ObjectsActivator act; ObjectsActivator act;
// ------------ SharedMemory ---------------- // ------------ SharedMemory ----------------
SharedMemory* shm = SharedMemory::init_smemory(argc,argv); SharedMemory* shm = SharedMemory::init_smemory(argc,argv);
if( !shm ) if( shm == NULL )
return 1; return 1;
act.addManager(static_cast<class ObjectsManager*>(shm)); act.addManager(static_cast<class ObjectsManager*>(shm));
// ------------ IOControl ---------------- // ------------ IOControl ----------------
ThreadCreator<IOControl>* io_thr = 0; ThreadCreator<IOControl>* io_thr = NULL;
if( add_io ) if( add_io )
{ {
IOControl* ic = IOControl::init_iocontrol(argc,argv,shm->getId(),shm); IOControl* ic = IOControl::init_iocontrol(argc,argv,shm->getId(),shm);
if( !ic ) if( ic == NULL )
return 1; return 1;
io_thr = new ThreadCreator<IOControl>(ic, &IOControl::execute); io_thr = new ThreadCreator<IOControl>(ic, &IOControl::execute);
if( !io_thr ) if( io_thr == NULL )
return 1; return 1;
act.addObject(static_cast<class UniSetObject*>(ic)); act.addObject(static_cast<class UniSetObject*>(ic));
} }
// ------------- IOControl2 --------------
ThreadCreator<IOControl>* io2_thr = NULL;
if( add_io2 )
{
IOControl* ic2 = IOControl::init_iocontrol(argc,argv,shm->getId(),shm,"io2");
if( ic2 == NULL )
return 1;
io2_thr = new ThreadCreator<IOControl>(ic2, &IOControl::execute);
if( io2_thr == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(ic2));
}
// ------------- RTU Exchange -------------- // ------------- RTU Exchange --------------
if( add_rtu ) if( add_rtu )
{ {
RTUExchange* rtu = RTUExchange::init_rtuexchange(argc,argv,shm->getId(),shm); RTUExchange* rtu = RTUExchange::init_rtuexchange(argc,argv,shm->getId(),shm,"rs");
if( !rtu ) if( rtu == NULL )
return 1; return 1;
act.addObject(static_cast<class UniSetObject*>(rtu)); act.addObject(static_cast<class UniSetObject*>(rtu));
} }
// ------------- RTU2 Exchange --------------
// ------------- MBSLavee -------------- if( add_rtu2 )
{
RTUExchange* rtu2 = RTUExchange::init_rtuexchange(argc,argv,shm->getId(),shm,"rs2");
if( rtu2 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(rtu2));
}
// ------------- MBSlave --------------
if( add_mbslave ) if( add_mbslave )
{ {
MBSlave* mbs = MBSlave::init_mbslave(argc,argv,shm->getId(),shm); MBSlave* mbs = MBSlave::init_mbslave(argc,argv,shm->getId(),shm);
if( !mbs ) if( mbs == NULL )
return 1; return 1;
act.addObject(static_cast<class UniSetObject*>(mbs)); act.addObject(static_cast<class UniSetObject*>(mbs));
} }
// ---------------------------------------- // ------------- MBTCPMaster 1 --------------
SystemMessage sm(SystemMessage::StartUp); if( add_mbmaster )
act.broadcast( sm.transport_msg() ); {
act.run(true); MBTCPMaster* mbm1 = MBTCPMaster::init_mbmaster(argc,argv,shm->getId(),shm,"mbtcp");
if( mbm1 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(mbm1));
}
// ------------- MBTCPMaster 2 --------------
if( add_mbmaster2 )
{
MBTCPMaster* mbm2 = MBTCPMaster::init_mbmaster(argc,argv,shm->getId(),shm,"mbtcp2");
if( mbm2 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(mbm2));
}
// ------------- MBTCPMaster 3 --------------
if( add_mbmaster3 )
{
MBTCPMaster* mbm3 = MBTCPMaster::init_mbmaster(argc,argv,shm->getId(),shm,"mbtcp3");
if( mbm3 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(mbm3));
}
#if 0
UniExchnage deprecated
// ------------- UniExchange 1 --------------
ThreadCreator<UniExchange>* unet_thr = NULL;
if( add_uniexchange )
{
UniExchange* unet = UniExchange::init_exchange(argc,argv,shm->getId(),shm,"unet");
if( unet == NULL )
return 1;
unet_thr = new ThreadCreator<UniExchange>(unet, &UniExchange::execute);
if( unet_thr == NULL )
return 1;
act.addManager(static_cast<class ObjectsManager*>(unet));
}
// ------------- UniExchange 2 --------------
ThreadCreator<UniExchange>* unet2_thr = NULL;
if( add_uniexchange2 )
{
UniExchange* unet2 = UniExchange::init_exchange(argc,argv,shm->getId(),shm,"unet2");
if( unet2 == NULL )
return 1;
unet2_thr = new ThreadCreator<UniExchange>(unet2, &UniExchange::execute);
if( unet2_thr == NULL )
return 1;
act.addManager(static_cast<class ObjectsManager*>(unet2));
}
#endif
// ------------- MBTCPMaster SES1 --------------
if( add_mbtcp_ses1 )
{
MBTCPMaster* mbm_ses1 = MBTCPMaster::init_mbmaster(argc,argv,shm->getId(),shm,"mbtcp-ses1");
if( mbm_ses1 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(mbm_ses1));
}
// ------------- MBTCPMaster SES2 --------------
if( add_mbtcp_ses2 )
{
MBTCPMaster* mbm_ses2 = MBTCPMaster::init_mbmaster(argc,argv,shm->getId(),shm,"mbtcp-ses2");
if( mbm_ses2 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(mbm_ses2));
}
// ------------- MBTCPMaster SES3 --------------
if( add_mbtcp_ses3 )
{
MBTCPMaster* mbm_ses3 = MBTCPMaster::init_mbmaster(argc,argv,shm->getId(),shm,"mbtcp-ses3");
if( mbm_ses3 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(mbm_ses3));
}
// ------------- MBTCPMaster SES4 --------------
if( add_mbtcp_ses4 )
{
MBTCPMaster* mbm_ses4 = MBTCPMaster::init_mbmaster(argc,argv,shm->getId(),shm,"mbtcp-ses4");
if( mbm_ses4 == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(mbm_ses4));
}
// ------------- UNetUDP --------------
if( add_unetudp )
{
UNetExchange* unet = UNetExchange::init_unetexchange(argc,argv,shm->getId(),shm);
if( unet == NULL )
return 1;
act.addObject(static_cast<class UniSetObject*>(unet));
}
// ---------------------------------------
SystemMessage sm(SystemMessage::StartUp);
act.broadcast( sm.transport_msg() );
msleep(1000);
if( io_thr ) if( io_thr )
io_thr->start(); io_thr->start();
pause(); if( io2_thr )
io2_thr->start();
/*
if( unet_thr )
unet_thr->start();
if( unet2_thr )
unet2_thr->start();
*/
act.run(false);
while( waitpid(-1, 0, 0) > 0 );
return 0; return 0;
} }
catch(Exception& ex) catch(Exception& ex)
...@@ -101,25 +253,63 @@ int main( int argc, char **argv ) ...@@ -101,25 +253,63 @@ int main( int argc, char **argv )
{ {
unideb[Debug::CRIT] << "(smemory-plus): catch(...)" << endl; unideb[Debug::CRIT] << "(smemory-plus): catch(...)" << endl;
} }
while( waitpid(-1, 0, 0) > 0 );
return 1; return 1;
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
void help_print( int argc, char* argv[]) void help_print( int argc, const char* argv[])
{ {
cout << "--add-io - Start IOControl" << endl; cout << "--skip-io - skip IOControl" << endl;
cout << "--add-rtu - Start RTUExchange" << endl; cout << "--add-rtu - Start RTUExchange" << endl;
cout << "--add-rtu2 - Start RTUExchange2" << endl;
cout << "--add-mbslave - Start ModbusSlave" << endl; cout << "--add-mbslave - Start ModbusSlave" << endl;
cout << "--add-io2 - Start IOControl2" << endl;
cout << "--add-mbmaster - Start MBTCPMaster" << endl;
cout << "--add-mbmaster2 - Start MBTCPMaster2" << endl;
cout << "--add-mbmaster3 - Start MBTCPMaster3" << endl;
cout << "--add-unet - Start UniNetwork" << endl;
cout << "--add-mbtcp-ses1 - Exchange for FastwelIO (gdg1)" << endl;
cout << "--add-mbtcp-ses2 - Exchange for FastwelIO (gdg2)" << endl;
cout << "--add-mbtcp-ses3 - Exchange for FastwelIO (gdg3)" << endl;
cout << "--add-mbtcp-ses4 - Exchange for FastwelIO (gdg4)" << endl;
cout << "--add-uniset-unet2 - Exchange for UNet2" << endl;
cout << "\n ###### SM options ###### \n" << endl; cout << "\n ###### SM options ###### \n" << endl;
SharedMemory::help_print(argc,argv); SharedMemory::help_print(argc,argv);
cout << "\n ###### IO options ###### \n" << endl; cout << "\n ###### IO options ###### \n" << endl;
IOControl::help_print(argc,argv); IOControl::help_print(argc,argv);
cout << "\n ###### RTU options ###### \n" << endl; cout << "\n ###### RTU options ###### \n" << endl;
RTUExchange::help_print(argc,argv); RTUExchange::help_print(argc,argv);
cout << "\n ###### ModbusSlave options ###### \n" << endl; cout << "\n ###### ModbusSlave options ###### \n" << endl;
MBSlave::help_print(argc,argv); MBSlave::help_print(argc,argv);
cout << "\n ###### ModbusTCP Master options ###### \n" << endl;
MBTCPMaster::help_print(argc,argv);
// cout << "\n ###### UniExchange options ###### \n" << endl;
// UniExchange::help_print(argc,argv);
cout << "\n ###### UNetExchange options ###### \n" << endl;
UNetExchange::help_print(argc,argv);
// CanExchange::help_print(argc,argv); //не реализована!!!
cout << "\n ###### Common options ###### \n" << endl;
cout << "--confile - " << endl;
cout << "--logfile - " << endl;
cout << "--myEDS - " << endl;
cout << "--slaveEDS - " << endl;
cout << "--nodeID - " << endl;
cout << "--initPause - " << endl;
cout << "--baudrate - " << endl;
cout << "--maxHBValue - " << endl;
cout << "--nodeName - " << endl;
cout << "--sendTime - " << endl;
cout << "--lifeTime - " << endl;
cout << "--workTime - " << endl;
cout << "--receiveTime - " << endl;
} }
...@@ -5,7 +5,6 @@ START=uniset-start.sh ...@@ -5,7 +5,6 @@ START=uniset-start.sh
${START} -f ./uniset-smemory-plus --smemory-id SharedMemory --confile test.xml \ ${START} -f ./uniset-smemory-plus --smemory-id SharedMemory --confile test.xml \
--unideb-add-levels info,crit,warn,level9,system,level3,level2,level1 \ --unideb-add-levels info,crit,warn,level9,system,level3,level2,level1 \
--add-io \
--io-name IOControl \ --io-name IOControl \
--io-polltime 100 \ --io-polltime 100 \
--io-s-filter-field io \ --io-s-filter-field io \
...@@ -14,7 +13,15 @@ ${START} -f ./uniset-smemory-plus --smemory-id SharedMemory --confile test.xml ...@@ -14,7 +13,15 @@ ${START} -f ./uniset-smemory-plus --smemory-id SharedMemory --confile test.xml
--iodev2 /dev/null \ --iodev2 /dev/null \
--io-test-lamp RS_Test9_S \ --io-test-lamp RS_Test9_S \
--io-heartbeat-id AI_AS \ --io-heartbeat-id AI_AS \
--io-sm-ready-test-sid RS_Test9_S --io-sm-ready-test-sid RS_Test9_S \
--add-mbmaster \
--mbtcp-name MBMaster1 \
--mbtcp-filter-field rs \
--mbtcp-filter-value 1 \
--mbtcp-gateway-iaddr localhost \
--mbtcp-gateway-port 2048 \
--mbtcp-recv-timeout 200 \
--mbtcp-force-out 1 \
# --add-rtu \ # --add-rtu \
# --rs-dev /dev/cbsideA1 \ # --rs-dev /dev/cbsideA1 \
# --rs-id RTUExchange \ # --rs-id RTUExchange \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment