Best practices for complex recipe-based system?

Hi Folks,
I'm at about the intermediate level (working on my CLD), and tasked with re-vamping a tighly-developed control system(which I'm intimately familiar with) into more of a configurable 'recipe'-based system. Basically the current front-end control software does a lot of the work for the end user - it pre-defines flows, assumes certain electrical/plumbing configurations, etc. This is fine for the 'production floor', however the R&D guys would like something a bit more configurable.
This system comprises of several flow controllers, mostly controlled/monitored via analog I/O (compact FieldPoint). There's some static analog input channels devoted to temp, humidity, etc. There exists the possibility of 1-2 external RS232 metering devices as well.
Anyway I'm trying to work out the foundation for the UI. In terms of architecture think a que-ed state machine is my best bet due to the number of parallel processes occuring at once (analog acq, multiple serial comm, TDMS, UI, etc).  Basically I'd like the user to be able to add/remove/modify 'steps'. For instance, "Set Flow: controller IDx, 20cfm", or "Time Delay, Static: 10:00", "Time Delay, Psuedo-Static, based on X". 
I've worked out a configuration UI (utilizing the in-build NI configuration storage VIs) to associate the analog channels to external devices (ie Aout1="Controller1 SP", Ain1="Controller1 FB"). Later I'll populate a ring control, for instance, for the 'add SetFlow step', to list all of the analog OUTs for selection.
So I guess what I'm looking for is advice on passing all this info around without having to re-hash it all the time to present to the user. Keeping in enum/ring allows for easy user viewing, changing, and block diagram readbility (vs string constants, which are error prone) - is this something that the 'flatten to string' would be helpful for (something I have no experiance using).
What tips can you provide for moderate-complexity HMI control systems developed strictly in LV? We currently don't have DSC, and I'm a bit closed-minded about using it for this (but perhaps you can convince me otherwise?).
Thanks for your time,
Jamie
Message Edited by 8bitbanger on 04-21-2010 08:10 AM
v2009 devel. w/RT

Cool, thanks for the screenshot!
This request for more customization was anticipated, so I began working things in last year with other minor revs. The first was this 'hardware configuration' utility. Right now I'm only using the MFC Config page for channel scalling/name info. (the production version still relies on 'static' channel associations to control devices). The enum 'card/slot' selector does exactly as you mentioned - it controls a tab value, which loads other pages (with similar info).
The second 'generator' page is used to populate a list of generators available for the user to select, and works quite well - users can add somewhat custom generators to the list w/out having to specify "custom" every time (and I don't have to rebuild to add such a simple thing).
You can see the 'Flow Control' and 'Monitor' channel that have not yet been implimented. :-)
Lastly the mockup is where I want to end up. I *wish* that labview was able to incorperate enum/ring drop-downs within a table cell (without the hacks that I've seen suggested).
I intended to setup a similar format for the 'steps' - an Action (or noun as you say), Target (ie file path, device name, etc), Value (setpoint, other pertinent data), etc. Do you pass this info around as a cluster in your VI then simply parse out to the UI in the steps listing? My hurdle is how to ellegantly relate, say, a CSV file back to the enums without a lot of hard-coded (constant) strings.
Cheers,
Jamie
::edit:: *Finally* found the button to insert images... ::edit::
Message Edited by 8bitbanger on 04-21-2010 10:30 AM
v2009 devel. w/RT
Attachments:
config_UI.JPG ‏52 KB
generators.JPG ‏39 KB
mock-up.JPG ‏33 KB

Similar Messages

  • Best Practice for module components based on API's

    Hi all,
    is there a white paper/other documents which outline best
    practice for using table/module component api's and best
    approaches to get around restrictions?
    I would also appreciate war stories about using this method of
    Forms development bearing in mind i would be using this as the
    foundation of a web deployed based application (intranet first -
    ultimately internet).
    Thanks
    Mark
    null

    You cannot add agents to skills dynamically; however, you can queue the caller into more than one CSQ based on statistics. You would use the Get Reporting Statistics and an If step within the Queued branch of your first Select Resource step. If the condition is met (e.g. Contacts Waiting >= 10) then exectue a second Select Resource step within the queued branch of the first. The contact would then be waiting in both CSQs waiting for an agent.

  • Best practices for setting environment based static variables?

    I have a set of static string variables that hold the url location of modules in a project. These locations change depending on whether I'm building for development, staging or production.
    What's the best way to set static variables in this way?

    I don't know if this is best practice, but here's the solution I've come up with.
    The root domain is accessible within the swf via a node on a loaded xml file. So I created a simple method that sets a url variable based on that domain node.
    The domain-based url variable is then used within the static string variables that define the location of the modules.
    Simplified like so:
    var domain:String = xml.node.value;
    static var bucketLocation:String = getLocation()
    static var moduleLocation:String = bucketLocation + "modulename.swf";
    function getLocation():String
         var loc:String
         switch (domain) {
              case stagingUrl:
                  loc = "pathToAmazonStagingBucket";
                   break;
              case productionUrl:
                   loc = "pathToAmazonProductionBucket";
                   break;

  • Best practices for data entry online system

    Hi all
    I am(with a team of 4 members) going to build an online data entry system which may have approximately 30 screens. I am going to use Spring BlazeDS remoting to connect middleware.
    Anyone could please suggest me some good practices to follow in flex side to do such a "DATA ENTRY" application.
    The below points are some very few common best practices we need to follow while doing coding .But i am not sure how to achive them in flex side.
    User experience (Probably i can get little info regarding this from my client)
    Code maintanability
    Code extendibility
    memory and CPU optimization
    Able to work with team members(Multiple checkouts)
    Best framework
    So i am looking for valueble suggestion from great minds.

    There are two options, none of them very palatable:
    1) One is to create a domain, and add the VM and your local box to it.
    2) Stick to a workgroup, but have the same user name and password on both machines.
    In practice, a better option is to create an SQL login that is member of sysadmin - or who have rights to impersonate an account that is member of sysadmin. And for that matter, you could use the built-in sa account - but you rename it to something else.
    The other day I was looking at the error log from a server that apparently had been exposed on the net. The log was full with failed login attempts for sa, with occasional attempts for names like usera and so on. The server is in Sweden - the IP address
    for the login attempts were in China.
    Just so know what you can expect.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • Best practice for adding agents based on queue stats

    I am looking for some guidance (sanity check really) on the best way for to add agent to a CSQ base on call statistics. Scenario: 20 agents logged in and ready. The first 15 agents take all the calls until the contacts waiting reaches 10, then and only then should the other 5 agents start taking calls.
    I appreciate any help or sample scipts on this subject.

    You cannot add agents to skills dynamically; however, you can queue the caller into more than one CSQ based on statistics. You would use the Get Reporting Statistics and an If step within the Queued branch of your first Select Resource step. If the condition is met (e.g. Contacts Waiting >= 10) then exectue a second Select Resource step within the queued branch of the first. The contact would then be waiting in both CSQs waiting for an agent.

  • Best practice for upgrading an old system?

    My Archlinux installation seems to have been upgraded over three years ago for the last time. Today, a naive pacman -Syu resulted in a number of file conflict errors and wasn't carried out.
    I then checked the list of announcements since 2011 and identified a few that included the string "manual intervention required". I believe that it was the update of the "filesystems" package that didn't work, again due to conflicts, probably related to the move from /lib to /usr/lib around that time.
    My attempt to update glibc resulted in misconfigured libraries, which took a while to sort out. While I can run commands again, I doubt that my system is in a very healthy state now.
    What should I do, what should I have done to update my Archlinux installation, untouched for 3.5 years?
    Last edited by berndbausch (2014-08-31 04:14:50)

    SoleSoul wrote:If 'pacman -Syu' works now, what makes you ask this question? Is anything still broken?
    Well, I asked the question because nothing worked after following a few of those "manual intervention required" notes. More precisely, the result of the last pacman was that literally no command worked. It turned out that the system didn't find libraries anymore, in particular the loader ld-linux.so. It took me a while to figure this out and to patch the system up enough to have it limp along. Good learning, by the way.
    After that and the suggestion in this forum that a reinstall was the best solution anyway I did just that. Since my only applications were Samba and the acpi daemon, that was not too bad. Unfortunately it's not Archlinux anymore, but Centos, which I am simply more familiar with.

  • Best practice for deleting data based on mismatch

    I have two tables which share the same key columns (one is an extension table of the other, basically)
    INVPARTINSTOCK_C is current data
    INVPARTINSTOCK_D is a date extension table
    I want to remove all data in D which is not in C
    I can gather a list of mismatched data by using:
    select
    d.Contract,
    d.Part_No,
    d.Location_No,
    d.Lot_Batch_No,
    d.Serial_No,
    d.Eng_Chg_Level
    from invpartinstock_d d
    MINUS
    select
    c.Contract,
    c.Part_No,
    c.Location_No,
    c.Lot_Batch_No,
    c.Serial_No,
    c.Eng_Chg_Level
    from invpartinstock_c c but how do I apply that to a DELETE FROM INVPARTINSTOCK_D WHERE... ?
    Thanks

    1) It depends on, at least, the data volumes we're talking about, but
    DELETE FROM dtable
      WHERE (column_list) IN (your_minus_query)should be functionally correct. Probably more efficient would be
    DELETE FROM invpartinstock_d d
    WHERE NOT EXISTS(
        SELECT 1
          FROM invpartinstock_c c
         WHERE c.contract = d.contract
        )2) Why isn't there a foreign key relationship that prevents this sort of mismatch in the first place?
    Justin

  • Kernel: PANIC! -- best practice for backup and recovery when modifying system?

    I installed NVidia drivers on my OL6.6 system at home and something went bad with one of the libraries.  On reboot, the kernel would panic and I couldn't get back into the system to fix anything.  I ended up re-installing the OS to recovery my system. 
    What would be some best practices for backing up the system when making a change and then recovering if this happens again?
    Would LVM snapshots be a good option?  Can I recovery a snapshot from a rescue boot?
    EX: File system snapshots with LVM | Ars Technica -- scroll down to the section discussing LVM.
    Any pointers to documentation would be welcome as well.  I'm just not sure what to do to revert the kernel or the system when installing something goes bad like this.
    Thanks for your attention.

    There is often a common misconception: A snapshot is not a backup. A snapshot and the original it was taken from initially share the same data blocks. LVM snapshot is a general purpose solution which can be used, for example, to quickly create a snapshot prior to a system upgrade, then if you are satisfied with the result, you would delete the snapshot.
    The advantage of a snapshot is that it can be used for a live filesystem or volume while changes are written to the snapshot volume. Hence it's called "copy on write (COW), or copy on change if you want. This is necessary for system integrity to have a consistent data status of all data at a certain point in time and to allow changes happening, for example to perform a filesystem backup. A snapshot is no substitute for a disaster recovery in case you loose your storage media. A snapshot only takes seconds, and initially does not copy or backup any data, unless data changes. It is therefore important to delete the snapshot if no longer required, in order to prevent duplication of data and restore file system performance.
    LVM was never a great thing under Linux and can cause serious I/O performance bottlenecks. If snapshot or COW technology suits your purpose, I suggest you look into Btrfs, which is a modern filesystem built into the latest Oracle UEK kernel. Btrfs employs the idea of subvolumes and is much more efficient that LVM because it can operate on files or directories while LVM is doing the whole logical volume.
    Keep in mind however, you cannot use LVM or Btrfs with the boot partition, because the Grub boot loader, which loads the Linux kernel, cannot deal with LVM or BTRFS before loading the Linux kernel (catch22).
    I think the following is an interesting and fun to read introduction explaining basic concepts:
    http://events.linuxfoundation.org/sites/events/files/slides/Btrfs_1.pdf

  • Best Practices for AP Power

    Can someone tell me or explain to me if there are best practices for AP Power based on data or voice networks?  Specifically, if you're tasked to do a Wireless Site Survey with the intention that RRM will not be used how would you configure the APs power for data usage only or voice and data.
    I have never read anything that states a best practice for power ... I tend to set APs at 6 or 12 mW for 2.4GHz and 12mW or 25mW for 5GHz ... but there isn't anything to state whether my practice meet any type of best practice so I'm just looking for any supporting facts or idea of what other Wireless Engineers use when they do site surveys.
    Any information or shared thoughts are much appreciated!!!
    Thanks,
    Mal

    Hello Mal,
    Your question will cause a number of responses from the different RF chefs here, Im sure!
    Ive been in WiFi for a long time. When I sit down with educated customers they will ask the same question. Based on my experience designing high availability, data intensive networks I follow the practice to design for the "lowest" common denominator.
    With this being said, its often a 5 GHz Phone device or even a 2.4 GHz Vocera badge. In any case, both devices live in or around 20mW. I like to design my networks at 12.5mW. I find this works better for RRM and also builds in fluff incase I need to adjust power on a AP.
    If a customer requires both a 2.4GHz and 5 GHz design. I will just design 5 GHz  @ 12.5 mW, as the 2.4 GHz network will surly fit inside of the 5 GHz design.
    I hope this helps...

  • Installing SAP Best Practices for HCM v2.60

    Hi Gurus,
    Has anyone installed SAP Best practices for HCM. I have to install the building blocks in the system. Can anyone guide me How to approach it? I have downloaded SAP BP v2.60 for HCM. How will I start transfering it to the client's SAP ECC 6.0 system. My Client needs Best Practices for HCM in their system.
    Any kind of help is deeply appreciated. Please help.
    Regards,
    Sanchit

    Hi Shaukat!
    Please take a look at http://help.sap.com -> SAP Best Practices -> Cross-Industry Packages.
    You can also try and take a look at http://service.sap.com/swdc -> Download -> Installations & Upgrades -> Entry by Application Group -> SAP Best Practices
    Caution! You only can use the BP if this is suitable to your ERP version! Check if your HCM BP is for ERP2004. If so it will not work on an ERP2005 System.
    I hope this helps!
    Regards,
    Zsolt

  • Basic Strategy / Best Practices for System Monitoring with Solution Manager

    I am very new to SAP and the Basis group at my company. I will be working on a project to identify the best practices of System and Service level monitoring using Solution Manager. I have read a good amount about SAP Solution Manager and the concept of monitoring but need to begin mapping out a monitoring strategy.
    We currently utilize the RZ20 transaction and basic CCMS monitors such as watching for update errors, availability, short dumps, etc.. What else should be monitored in order to proactively find possible issues. Are there any best practices you all have found when implimenting Monitoring for new solutions added to the SAP landscape.... what are common things we would want to monitor over say ERP, CRM, SRM, etc?
    Thanks in advance for any comments or suggestions!

    Hi Mike,
    Did you try the following link ?
    If not, it may be useful to some extent:
    http://service.sap.com/bestpractices
    ---> Cross-Industry Packages ---> Best Practices for Solution Management
    You have quite a few documents there - those on BPM may also cover Solution Monitoring aspects.
    Best regards,
    Srini
    Edited by: Srinivasan Radhakrishnan on Jul 7, 2008 7:02 PM

  • Best practices for apps integration with third party systems ?

    Hi all
    I would like to know if there is any document from oracle or from your own regarding best practices for apps integration with third party systems.
    For example, in particular, let's say we need customization in a given module(ex:payables) need to provide data to a third party system, consider following:
    outbound interface:
    1)should third party system should be given with direct access to oracle database to access a particular payments data information table/view to look for data ?
    2) should oracle create a file to third party system, so that it can read and do what it need to do?
    inbound:
    1) should third party should directly login and insert data into tables which holds response data?
    2) again, should third party create file and oralce apps will pick up for further processing?
    again, there could be lot of company specific scenarios like it has to be real time or not... etc...
    How does companies make sure third party systems are not directly dipping into other systems (oracle apps/others), so that it will follow certain integration best practices.
    how does enterprise architectute will play a role in this? can we apply SOA standards? should use request/reply using Tibco etc?
    Many oracle apps implementations customizations are more or less directly interacting with third party systems by including code to login into respective third party systems and vice versa.
    Let me your know if you have done differently and that would help oracle apps community.
    thanks
    rrb.

    you want to send idoc to third party system (NONSAP).
    what kind of system is it? can it handle http requests
    or
    can it handle webservice?
    which version of R/3 you are using?
    what is the mechanism the receiving system has, to receive data?
    Regards
    Raja

  • Best practices for Refreshing Unv Structure for SAP based universes

    This may sound basic and I apologize for asking this, but the refresh structure in SAP based universes is somewhat different from noraml universes.
    Here is what i'd like to do:
    - Hide all the L00 objects.
    - Rename all the L01 objects and move them to a new Class.
    - Change some of the detail (attribute) objects to dimension objects.
    - Hide the format and Unit for key figures.
    - Hide all of the classes/subclasses  that get automatically generated when a SAP based universe is created.
    I have noticed that when I do the above and refresh the universe, it assumes that all these objects have gone missing from the original classes and adds them back to the universe.
    I also want to make sure that if the select of an object gets updated and the object is re-named, then it should automatically pick up the change.
    Lastly, I have some reports which were built prior to this renaming. I want to make sure that the reports do not break.
    Thanks,
    Kashif

    Hi,
    This thread is really old. 
    Yes it was a common problem back in the earlier XI 3.x days . a lot of bugs in this area were eliminated by the time of XI 3.1 SP03 FP3.x   -  you don't quote your version.
    Actually, you need to be aware that a refresh structure is often not needed, and can corrupt the olap universe . Pls check out Note 1278216 - What are the best practices for OLAP Universe Change Management when using SAP Integration Kit?
    in essence :
    Only use 'Refresh Structure' functionality If: 
    - A new Object (Dimension/Characteristic) has been added to the BEx query (Rows/Columns/Free Characteristics)
    - A new Variable Restriction has been added to the Bex query Filters
    Do not use 'Refresh Structure' functionality after:
    - Having modified a STRUCTURE in BEx. i.e. 'Detail view of Formula' or 'Details of Selection', or changing the General Description of structure members.
    - Doing manual actions on objects/classes in the OLAP Universe like:  Move ; Cut/Paste ; Drag/Drop ; Hide ; Delete.
    (because these workflow can lead to corruption)
    regards,
    H

  • Best Practices for FSCM Multiple systems scenario

    Hi guys,
    We have a scenario to implement FSCM credit, collections and dispute management solution for our landscape comprising the following:
    a 4.6c system
    a 4.7 system
    an ECC 5 system
    2 ECC6 systems
    I have documented my design, but would like to double check and rob minds with colleagues regarding the following areas/questions.
    Business partner replication and synchronization: what is the best practice for the initial replication of customers in each of the different systems to business partners in the FSCM system? (a) for the initial creation, and (b) for on-going synchronization of new customers and changes to existing customers?
    Credit Management: what is the best practice for update of exposures from SD and FI-AR from each of the different systems? Should this be real-time for each transaction from SD and AR  (synchronous) or periodic, say once a day? (assuming we can control this in the BADI)
    Is there any particular point to note in dispute management?
    Any other general note regarding this scenario?
    Thanks in advance. Comments appreciated.

    Hi,
    I guess when you've the informations that the SAP can read and take some action, has to be asynchronous (from non-SAP to FSCM);
    But when the credit analysis is done by non-SAP and like an 'Experian', SAP send the informations with invoices paid and not paid and this non-SAP group give a rate for this customer. All banks and big companies in the world does the same. And for this, you've the synchronous interface. This interface will updated the FSCM-CR (Credit), blocking or not the vendor, decreasing or increasing them limit amount to buy.
    So, for these 1.000 sales orders, you'll have to think with PI in how to create an interface for this volume? What parameters SAP does has to check? There's an time interval to receive and send back? Will be a synchronous or asynchronous?
    Contact your PI to help think in this information exchange.
    Am I clear in your question?
    JPA

  • Best Practice for PDF print forms based on SAP standard

    Hi,
    I have copied the SAP standard PDF form F_D_INT_SCALE_00 to a Z form, and am using it in conjunction with the standard print program RFDZIS01_PDF.  However I need to output some additional fields that are not supplied by the print program / interface (for example Customer VAT number).
    What is the best practice for achieving this?  As far as I can see the only way is to take a copy of the standard print program and modify it to select the extra data, and modify the interface.  I never like taking copies of standard programs though for obvious reasons.
    If I had this requirement with a smartform it would be a simple case of embedding ABAP code into the Z smartform and leaving the print program alone, but unfortunately there is no provision for the non-PDF version of the Interest Letter to be sent by email.
    Thanks in advance,
    Vindaloo

    Thanks for your reply Robert.
    However I think you are referring to Smartforms when you mention Code Initialization and Global Data declarations.  I need to know the best way to modify copies of standard Adobe Print Forms.
    Regards,
    Vindaloo

Maybe you are looking for

  • Weblogic 10.3.2. application launch delayed by approximately 60 seconds

    Hi, The application was developed using Flex 2, java, hibernate and spring framework(ver. 2.0.3). It works fine in the oracle Application server oc4j based container. When deployed this application in weblogic 10.3.2, after entering the username and

  • Itunes no longer recognizes  my ipod touch.

    I just updated Itunes (to 10.5.2.11) and now my old 2nd gen ipod touch is no longer recognised by the program. is my device simply too old to be supported anymore? if it is helpful, the Ipod will not update to IOS 5 either.

  • Bootcamp failure has stopped my Mac Mini from booting anything

    I tried to bootcamp windows 7 on to my new 2012 mac mini earlier today using a 16GB usb stick. It formatted the usb drive, turned it into a bootable disk and put the windows 7 ISO onto it. Everything was going fine until I got to the windows 7 instal

  • Help needed in creating a mail object

    Hi, is there any option to create a mail objcet in jsp ??? i.e. the equivalent code to this asp object : Set myMail = CreateObject("CDONTS.NewMail"); regards, ashvini

  • Good Hard Drive Data Recovery Companies?

    My Powerbook G4 Seagate 100gb hard drive recently crashed. I am a little desperate. I have been calling many different ones and not sure which to choose from. Any suggestions or recommendations or experience? This is a really confusing and frustratin