1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 <2021> 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 <2021> 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: EPICS for Building a SCADA System for Energy Grids; Interface to NI VeriStand |
From: | Markus Huber via Tech-talk <tech-talk at aps.anl.gov> |
To: | Mark Rivers <rivers at cars.uchicago.edu> |
Cc: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Tue, 5 Jan 2021 12:48:34 +0100 |
Hi Mark, Thank you very much for the hints. I am currently trying to write my own driver based on asynPortDriver C++ base class, like you did in LightField.cpp. To do so, i created a new IOC which basically is a copy of the testAsynPortDriver example (but called it VeristandToEpics). This IOC runs as expected. My idea is to adapt the testAsynPortDriver.h and .cpp (in my case they are named VeristandToEpics.h and .cpp) step by step to fit my needs. So far i have added the following to my driver VeristandToEpics.cpp: "using namespace System;" (VeristandToEpics.cpp(36)) and "#using <NationalInstruments.Common.dll> // VeristandToEpics.cpp(46) #using <NationalInstruments.VeriStand.ClientAPI.dll> #using <NationalInstruments.VeriStand.DataTypes.dll> #using <NationalInstruments.VeriStand.dll> #using <NationalInstruments.VeriStand.RealTimeSequenceDefinitionApi.dll> #using <NationalInstruments.VeriStand.RealTimeSequenceDefinitionApiUtilities.dll> #using <NationalInstruments.VeriStand.RealTimeSequenceUtilities.dll> #using <NationalInstruments.VeriStand.SystemDefinitionAPI.dll> #using <NationalInstruments.VeriStand.SystemStorageUI.dll> #using <NationalInstruments.VeriStand.WorkspaceMacro.dll>" I have added these dll files to the src directory that also contains VeristandToEpics.cpp. When i now run "make" in <top> of my IOC i get the following error: "C:\Users\Mark\EPICS\VeristandToEpics\VeristandToEpicsApp\src\VeristandToEpics.cpp(36): error C2871: 'System': a namespace with this name does not exist C:\Users\Mark\EPICS\VeristandToEpics\VeristandToEpicsApp\src\VeristandToEpics.cpp(46): fatal error C1190: System::Object not found, missing /clr option or missing import of standard assemblies? make[3]: *** [C:/Installationen/EPICS/base-7.0.4.1/base-R7.0.4.1/configure/RULES_BUILD:249: VeristandToEpics.obj] Error 2 make[3]: Leaving directory 'C:/Users/Mark/EPICS/VeristandToEpics/VeristandToEpicsApp/src/O.windows-x64' make[2]: *** [C:/Installationen/EPICS/base-7.0.4.1/base-R7.0.4.1/configure/RULES_ARCHS:58: install.windows-x64] Error 2 make[2]: Leaving directory 'C:/Users/Mark/EPICS/VeristandToEpics/VeristandToEpicsApp/src' make[1]: *** [C:/Installationen/EPICS/base-7.0.4.1/base-R7.0.4.1/configure/RULES_DIRS:85: src.install] Error 2 make[1]: Leaving directory 'C:/Users/Mark/EPICS/VeristandToEpics/VeristandToEpicsApp' make: *** [C:/Installationen/EPICS/base-7.0.4.1/base-R7.0.4.1/configure/RULES_DIRS:85: VeristandToEpicsApp.install] Error 2" I use the "x64 Native Tools Command Prompt for VS 2019" for building and playing around with EPICS. This has worked so far for all my tests and builds. Do you have an Idea what i am doing wrong? Do I need to edit the Makefile or change compiler settings? Do i need to add more DLLs to my src directory? Thank you very much and kind regards Markus At the moment i am facing the following error: When i make my IOC Am 23.12.2020 um 18:27 schrieb Mark Rivers:
Hi Markus, I am not familiar with VeriStand, though from a quick look at their Web site I see it is a test framework that can use a variety of interfaces, including .NET Common Language Runtime (CLR). I have written one EPICS driver that uses the .NET CLR, namely the ADLightField driver in areaDetector: https://github.com/areaDetector/ADLightField https://areadetector.github.io/master/ADLightField/ADLightField.html It is based on the asynPortDriver C++ base class from the EPICS asyn module. I don't think that StreamDevice can be used as the interface between VeriStand and the SCADA because it is intended for string message interfaces, while I think you need a programmatic interface, e.g. C++. Mark -----Original Message----- From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Markus Huber via Tech-talk Sent: Wednesday, December 23, 2020 10:28 AM To: EPICS tech-talk <tech-talk at aps.anl.gov> Subject: EPICS for Building a SCADA System for Energy Grids; Interface to NI VeriStand Dear EPICS Community, I am quite new to EPICS and have some general questions. I am looking for an open-source framework that enables me to develop a SCADA system for an experimental sector-coupled microgrid at a research lab our univerity. After watching some videos and presentations about EPICS and its support modules, i think EPICS might be the right tool for that. Now i wonder if you think so, too. In the beginning our system consists of three main parts: 1. A VeriStand application that bundles all signals from/to the field controllers. 2. A software interface that enables communication between VeriStand (in particular: VeriStand's .NET API) and our intended SCADA system. 3. Our SCADA system, which should provide an HMI, historian database, alarm handling, and so on. Later, it should be possible to connect other devices to the SCADA system without the detour via the VeriStand application (1. and 2.). In the beginning, all three components will run on the same host machine. Do you think EPICS is suitable to develop such a SCADA system (3.)? * If yes, can you recommend any support modules to implement an interface between (2.) and (3.)? Do you think Asyn and StreamDevice are suitable, or is there a simpler way? * If no, can you recommend any other, well-documented, modern, and open-source frameworks to develop a SCADA system? Thank you in advance and kind regards Markus Huber MSc Student (Computer Science) at TU Munich