How to control a hydraulic system by PID

Hello, I am PhD student at the University of Zilina in Slovakia. I am currently working on a project to use PID control toolkit. We are running LabView 5.1 and PID Control Toolkit ver.2.1 under Windows NT4. We have bought a ATMIO16E10 card for the application that requires control of a servo-valve. Components of the hydraulic system are Regulation Axial Hydraulic Pump (generator), Nonregulation Axial Hydraulic Motor and Servo Valve which control movement of pump plate. I have a program which measure output voltage to servovalve, input revolve of hydromotor from tacho, pressure form transducers (pump), torque and revolve (pump) and movement of hydropump plate. My view of program is:
1.The card will acquire data from tacho, p
ressure transducers, torque and revolve transducer, movement of pump plate. The difference between measure and required value of hydromotor revolve will error.
2. Then the signal will go through a P, I, D process and the variables are changeable.
3. Then the process signal will output through the card and give voltage (current) to the servo valve to control of hydropump plate for the change of revolve of hydromotor.
At the same time there will be a graph on Monitor with measurement values and control voltage and the process goes until value is stabilized.
I have a very little idea of how to use PID control toolkit. I would be grateful if someone could give me some advice which type of P, I, D controller can I use and how it tuning. Might anyone have a idea of how I can use our measure program?
Thanks for any replies, peterk
Attachments:
mp.vi ‏137 KB

you migh consider the following text
Process Dynamics and Control by Seborg/Edgar/Mellichamp
It has good examples and discussion of tuning and the use of PID.
Good Luck
Preston Johnson
Business Development Manager
Industrial Applications
[email protected]
512-683-5444
Preston Johnson
Principal Sales Engineer
Condition Monitoring Systems
Vibration Analyst III - www.vibinst.org, www.mobiusinstitute.com
National Instruments
[email protected]
www.ni.com/mcm
www.ni.com/soundandvibration
www.ni.com/biganalogdata
512-683-5444

Similar Messages

  • Hydraulic system - how to control a servo valve?

    Thanks for ur attention.
    I just set up a oil hydraulic system and mechanism that is such a MTS(material test system).
    And my question is how to let my cylinder go forward at a constant velocity.
    Because when the cylinder contact my specimen(I have many different specimens), it will produce a reacting force and let the cylinder can't go forward at a constant velocity I set. 
    So I know it needs adjusting input voltage to servo valve .
    I have looked much information from Ni discussion forums, but I totally have no idea about this.
    I only know that I need to use PID control.  My feedback signal is from LVDT.
    What kind of ni card I need? I have pci-6033e, although its analogy outpout only can + - 10v.
    At least, 6033e can let me test servo valve between -5v to 5v.
    Can I use DAQ-card to achieve my goal? Because I'm not sure if 6033e supported pid toolkit.
    By the way, this question is just the beginning.
    I need to finish displacement control, force control, and fatigue loading control at 10Hz.
    servo valve: + - 10v input , 0v is at centered position. 10v is P port 100% to A Port.  threshold<0.1%
    platform: XP, Labview 8.2 (includes Real-time module, PID toolkit)

    On Jan 21, 1:10 pm, szuhsien <[email protected]> wrote:
    > Thanks for ur attention.
    > I just set up a oil hydraulic system and mechanism that is such a MTS(material test system).
    > And my question is how to let my cylinder go forward at a constant velocity.
    > Because when the cylinder contact my specimen(I have&nbsp;many different specimens), it will produce a reacting force and let the cylinder can't go forward at a constant velocity&nbsp;I set.&nbsp;
    > So I know it needs&nbsp;adjusting input voltage to servo valve .
    > I have looked much information from Ni discussion forums, but&nbsp;I totally have no idea about this.
    > I only know&nbsp;that I need to use PID control.&nbsp;&nbsp;My feedback signal is from LVDT.
    > What kind of ni card&nbsp;I need? I have pci-6033e, although its analogy outpout only can + - 10v.
    > At least, 6033e can let me test servo valve between -5v to 5v.
    > Can I&nbsp;use&nbsp;DAQ-card to achieve my goal? Because I'm not sure if 6033e supported pid toolkit.
    > &nbsp;
    > By the way, this question is just the beginning.
    > I need to finish displacement control, force control, and fatigue loading control at 10Hz.
    > &nbsp;
    > ----------&nbsp;&nbsp;
    > servo valve: + - 10v input , 0v is at centered position. 10v is P port 100% to A Port.&nbsp; threshold&lt;0.1%
    > platform: XP, Labview 8.2 (includes Real-time module, PID toolkit)
    First thing when you say MTS do you Mean the Company located in
    Minneapolis, MN that makes hydraulic test systems that do the type of
    testing you describe or are using the word as an acronym? Yes, you
    will need a closed loop control system to do all you want to do. The
    system should have both a load cell for measuring the axial force
    applied to a specimen and a LVDT for measuring the displacement of the
    piston and provisions for either load or position control. My
    recommendation is you use Labview strictly for data acquisition and
    you you use an all analog control system in your application. With
    position control you could use a ramp input to move the piston at a
    constant velocity. You can build an analog PI controller fairly
    easily. You should not use the D part of PID in a closed loop system
    that uses a hydraulic piston for an actuator.
    Howard

  • How to use labjack U12 to control solenoid directiona​l valve with Labview in hydraulic system

    Hi,
    I need to control a solenoid operated direactional valve in hydraulic system with Labjack U12. I am using three relays but need some help on the vi. like which instrument drive I need to use etc....
    The coil voltage for the solenoid valve is :  AC120V, 60Hz; AC110V, 50Hz 
    My goal is to control this solenoid valve open/close at certin time, am using Labview 2011. Any advise would be helpful.
    Thank you!

    Have you got the relays working yet.  Do some initial testing with LJlogger to make sure hardware is controlling the relays as expected.  If you need further help with this step, provide a link to electrical details for the relays and describe how you have the relays connected to the U12.
    As for your programming in LabVIEW, I suspect you are using digital I/O, so the simplest thing to do is call EDigitalOut() to set a particular line to output-high or output-low, or if you need to set a line to input (for open-collector style control) use a call to EDigitalIn().  Perhaps look at "e function example.vi" to get started, and for general information about using the LabJack U12 with LabVIEW see topic #84 from the LabJack forums.

  • How to control system volume by moving mouse up and down using java

    hi,
    please give me suggestion that how to control the system volume by moving mouse up and down in java..
    thanks,
    prabhu selvakumar.

    Prabhu_Selvakumar wrote:
    Thank u for ur reply... i dont know wat is JNI interface... i have to read about that.... Unless you're a whiz-bang C/C++ coder, using this won't be easy or pretty. For my money, if I wanted to create a program that interacted closely with a specific OS, I'd use a more OS-specific programming language such as C# if I'm coding for Windoz.

  • I am looking for Compact RIO system for PID control

    Hi all,
    I am looking for the CompactRIO system for PID control.
    My system acquires two input data (0-10V) from two displacement sensors and sends one output signal (0-10V) to piezo-actuator at every step. And my target is the short settling time and the low overshoot.
    I think that I need fast control system. So I am interested in CompactRIO. But I am not familiar with this sytem. Could you recommend the good control system for me?
    The one important thing is that the time limiting step of my system is Piezo actuator (it's natural freq is 20kHz.) CompactRIO is much faster than the Piezo-actuator. I am not sure whether CompactRIO is good to my system or not.
    Here is the CompactRIO system which I am interested in:
    i) CompactRIO Reconfigurable Embedded System: cRIO-9004
    ii) CompactRIO Reconfigurable Chassis: cRIO-9101
    iii) I/O Module : AI : cRIO-9215 AO: cRIO-9263
    Thank you so much,
    Sungjin

    Hello Sungjin,
    CompactRIO should work great for your PID control system. Those I/O modules are the correct voltage range and the 1M gate FPGA backplane will be plenty for a single PID controller. You'll probably be able to get loop rates around 100kHz for analog PID control.
    Keep in mind that the LabVIEW FPGA module includes PID examples that will cut down your development time considerably.
    Regards,
    Vineet

  • Control three interdependent things with pid control?

    I have 3 things (they are valves) that I need to control to set flows... but adjusting one of the three valves will affect how the others behave... basically they are all 4-20mA controls, but if one is moved the others will read something different.
    My question, I'm having a hard time thinking about how to control these three things, I need to be able to tell any of the three to go to a certain flow regardless of where the others are... is PID the answer?  If so, I need to tune them one at a time, and I don't know what to set the other 2 vlaves while I tune 1... does it matter? cause, whatever PID constants I get from tuning will be dependent on what the other 2 valves are at... or is there another way?
    much thanks!

    Hi Fibo,
    I've linked an article you can read through for a quick intro to MIMO control.
    Can I simulate MIMO models in LabVIEW?
    However, I wonder if this necessarily needs a MIMO model.  Regardless of how one valve affects the other, if you've got a sensor on each of your valves and implement PID separately on each one, then the relationship between the 3 valves is eliminated, is it not?  We've now got 3 single-input single-output systems.
    Message Edited by Tejinder G. on 03-29-2010 01:05 PM
    Tejinder Gill
    National Instruments
    Applications Engineer
    Visit ni.com/gettingstarted for step-by-step help in setting up your system.

  • HOW TO CONTROL ON CREATION OF SALES ORDER WITH REFERENCE TO EARLIER SO?

    Dear All,
    I want to contol on creation of Sales order with reference to earlier SO?  While creation of sales order our enduser are creating sales order with reference to earlier month SO which I want to restrict. Recently I made changes in sales order like payment terms is grayed, system will atomatically pick pay terms from customer master.Now I am getting correct data also but enduser is using old SO no while creating new SO and old payment data is reflecting in fbl5n.
    I want to restrict enduser while creating new SO with ref. to old SO. Only for returns they should be able to use Billing refrence. Pl. suggest how to control the with reference to ealier SO.
    Nikhil

    Nikhil Deshpande,
          If you dont want allow create a sales order in referent to other one, just delete the copy control between these sales order type, so when the user tries to create a SO in reference to other one a message is displayed that is not possible.
    Thanks,
    Mariano.

  • How to control DE USB disk Automounts.

    Hi,
    Can someone please guide me as to how to 'control' Automounts by DE when we plug USB disk drives.
    I have KDE4 on my Arch system. When I connect a pen drive/USB HDD which is formatted as vfat/NTFS, the system(or KDE) 'Automounts' it in /media and I have read/write access to it. But if I use the same drive and format it as ext4, it wont be mounted as read/write for normal users but only for root.
    Now pen drives and USB HDD's are removable storage drives and hence are volatile and could not have a fixed mount point, so it cannot be mounted by putting an entry in fstab or could they?. And I need my USB HDD frequently, and manually mounting it through CLI everytime and working on it as root is a bad idea i guess.
    I am posting this because m confused as to how to control this Automount feature-What is the backend to it? Because I've read that HAL no longer takes care of it and that HAL will be deprecated soon, instead UDEV takes care of it. If that is the case then should I be concerned about polkit? Because that is what's the output provided by Dolphin(freedesktop.org policy prevented blah blah).
    Another thing is if HAL is still in use and Automounts my devices then is it independent or polkit is a part of it. Then, is using hal-easy an option or replacement to standard HAL. ??!!??
    I tried HAL archwiki and used the code to give a user permission to give rw access to automounted ext filesystems, but then nothing is mounted, it sings the same old freedesktop.org prevented bla blah song. And I think this is a question for all linuxes using Gnome and KDE in general.
    Any help is appreciated.

    If by 'ability to mount as user' you mean to mount it manually but read/write access to normal users then yes. But primarily I need automounting as user, also be able to give access to other users for read/write et filesystem automounts.
    Last edited by kapz (2009-11-17 01:12:56)

  • How to implement an audit system to track ADF applications DML activity?

    We have implemented a complete audit system for one of our databases in order to keep history for every table and every value that has been modified.
    The solution that we currently have can be split into two discrete parts:
    1. Keeping a record of all connections to the db account
    This is achieved via a table ‘user_sessions’ into which we record data for every session in the database with the help of on-logon and on-logoff triggers and some PL/SQL procedures:
    Column name        |  Explanation
    -------------------|-------------------------------------------
    US_ID              | PK, based on a sequence
    SESSION_ID         | sys_context('USERENV' ,'SESSIONID')  
    USER_NAME          | sys_context('USERENV' ,'OS_USER')
    LOGON_TIME         | when the on-logon trigger fires
    LOGOFF_TIME        | when the on-logoff trigger fires
    USER_SCHEMA        | sys_context('USERENV' ,'SESSION_USER')
    IP_ADDRESS         | sys_context('USERENV' ,'IP_ADDRESS')
    us_id |session_id |user_name|user_sschema|ip_address|logon_time               |logoff_time     
    560066|8498062       |BOB      |ABD         |1.1.1.2   |14-SEP-06 03.51.52.000000|14-SEP-06 03.52.30.000000
    560065|8498061       |ALICE    |ABC         |1.1.1.1   |14-SEP-06 02.45.31.000000|14-SEP-06 04.22.43.0000002. Keeping the history of every change of data made by a given user
    For every table in the account there is a corresponding history table with all of the columns of the original table plus columns to denote the type of the operation (Insert, Delete, Update), start and end time of validity for this record (createtime, retiretime) and us_id (which points to the user_sessions table).
    The original table has triggers, which fire if there is an insert, update or delete and they insert the data into the corresponding history table. For every record inserted into a history table the us_id taken from the user_sessions table is recorded as well, allowing us to determine who has modified what data via the combination of these two tables.
    Below is an example of a table TASKS, the history related triggers and the history table TASKS_HIST.
    At the moment we are developing new applications by using ADF. Since there is an Application Module Pool and Database Connection Pool implemented for the ADF, one connection to the database could be used by several users at different moments of time. In that case the history records will point to a database session logged into the user_sessions table, but we will not know who actually modified the data.
    Could you, please, give us a suggestion, how we can know at any moment of time who (which of our users currently making use of an ADF application) is using a given database connection?
    By way of an example of the problem we are facing, here is how we solved the same problem posed by the use of Oracle Forms applications.
    When the user starts to work with a given Forms application, user_sessions table would attempt to record the relevant information about he user, but since the db session was created by the application server, would in actual fact record the username and ip address of the application server itself.
    The problem was easy to solve due to the fact that there is no connection pooling and when a user opens their browser to work with Forms applications, a db connection is opened for the duration of their session (until they close their browser window).
    In that case, the moment when the user is authenticated (they log in), there is a PL/SQL procedure called from the login Form, which updates the record in the user_sessions table with the real login name and ip address of the user.
    Example of a table and its ‘shadow’ history table
    CREATE TABLE TASKS (
         TASKNAME     VARCHAR2(40),
         DESCRIPTION  VARCHAR2(80)
    ALTER TABLE TASKS ADD (
         CONSTRAINT TASKS_PK PRIMARY KEY (TASKNAME));
    CREATE OR REPLACE TRIGGER TASKS_HISTSTMP
    BEFORE INSERT OR UPDATE OR DELETE ON TASKS
       BEGIN
         HISTORY.SET_OPERATION_TIME('TASKS');
       EXCEPTION
         WHEN OTHERS THEN
           ERROR.REPORT_AND_GO;
    END TASKS_HISTSTMP;
    CREATE OR REPLACE TRIGGER TASKS_WHIST
      AFTER INSERT OR UPDATE OR DELETE ON TASKS
      FOR EACH ROW
      BEGIN
    CASE
          WHEN INSERTING THEN
            UPDATE TASKS_HIST
               SET retiretime = HISTORY.GET_OPERATION_TIME
             WHERE createtime = (SELECT MAX(createtime)
                                   FROM TASKS_HIST
                                  WHERE retiretime IS NULL AND TASKNAME=:NEW.TASKNAME)
               AND retiretime IS NULL AND TASKNAME=:NEW.TASKNAME;
            INSERT INTO TASKS_HIST (TASKNAME      ,DESCRIPTION      ,optype
                                    ,createtime                    
                                    ,us_id)
                   VALUES          (:NEW.TASKNAME ,:NEW.DESCRIPTION ,'I'
                                    ,HISTORY.GET_OPERATION_TIME    
                                    ,USER_SESSION.GET_USER_SESSIONS_ID);
          WHEN UPDATING THEN
            UPDATE TASKS_HIST
               SET retiretime = HISTORY.GET_OPERATION_TIME
             WHERE createtime = (SELECT MAX(createtime)
                                   FROM TASKS_HIST
                                  WHERE TASKNAME=:OLD.TASKNAME) 
               AND TASKNAME=:OLD.TASKNAME;
            INSERT INTO TASKS_HIST (TASKNAME      ,DESCRIPTION      ,optype
                                    ,createtime
                                    ,us_id)
                   VALUES          (:NEW.TASKNAME ,:NEW.DESCRIPTION ,'U'
                                    ,HISTORY.GET_OPERATION_TIME
                                    ,USER_SESSION.GET_USER_SESSIONS_ID);
          ELSE
            UPDATE TASKS_HIST
               SET retiretime = HISTORY.GET_OPERATION_TIME
             WHERE createtime = (SELECT MAX(createtime)
                                   FROM TASKS_HIST
                                  WHERE TASKNAME=:OLD.TASKNAME) 
               AND TASKNAME=:OLD.TASKNAME;
            INSERT INTO TASKS_HIST (TASKNAME      ,DESCRIPTION      ,optype
                                    ,createtime
                                    ,us_id)
                   VALUES          (:OLD.TASKNAME ,:OLD.DESCRIPTION ,'D'
                                    ,HISTORY.GET_OPERATION_TIME
                                    ,USER_SESSION.GET_USER_SESSIONS_ID);
        END CASE;
      EXCEPTION
        WHEN OTHERS THEN
          ERROR.REPORT_AND_GO;
    END TASKS_WHIST;
    CREATE TABLE TASKS_HIST (
         TASKNAME       VARCHAR2(40),
         DESCRIPTION    VARCHAR2(80),
         OPTYPE         VARCHAR2(1),
         CREATETIME     TIMESTAMP(6),
         RETIRETIME     TIMESTAMP(6),
         US_ID          NUMBER
    ALTER TABLE TASKS_HIST ADD (
         CONSTRAINT TASKS_HIST_PK PRIMARY KEY (TASKNAME, CREATETIME)
           );

    Frank,
    Thanks for your reply.
    I checked the site that you mentioned.
    I try the sample “demo with bundle. The sample worked.
    But it needed to start separately with the application.
    I do not know how to build a help system with the existed web application developed with Jdeveloper (It has two projects: model and user-view-control. It is deployed on Oracle Application server).
    Could you help me step by step to build the help system?

  • Using usb-1208fs to control a hydraulic directional valve

    Hi,
    I am a PhD student, beginner in Labview. I am working on a project require controlling a hydraulic directional valve by using a USB-1208FS DAQ. I have an ultrasonic proximity sensor to sense the height differences of plants. The sensor output signal is analog voltage 0-10V, I managed to acquire signal from the sensor using the DAQ. I need to set different values of plants height depending on the sensor signal to actuate the hydraulic valve. The valve will control a hydraulic cylinder to move it up and down depending on the plants heights. I worked through a VI, but I don’t know how to generate two signals of 0-5V to operate the valve. For example, the range of plants height (0-6 inches) will switch ON one side of the valve to lower the cylinder down. The range of heights of (0-12 inches) will switch ON the other side of the valve to raise the cylinder up. Can anyone help me figure out how to do that. Thanks for your help!  
    Attachments:
    Analog Input-Digital output.vi ‏68 KB

    Hello Mazin,
    The ULx driver comes with an analog output function. You can specify the channels the same way you specified the channels for the anolog input just in this case. The resource for this device is made with.NET so I am not sure how the resource is named but once you find out that convention you specify a group of lines by separating them by a colon (ex. AnalogInput ai0:1).
    Regards,
    -Travis E
    National Instruments
    Applications Engineer

  • How to Control authorization for users with certain status for level 2 WBS Element

    Dear All,
    Is there any standard way or enhancement available to control authorization for users with certain status for WBS Element i.e. for example
    Pre-requisite:
    There is only 2 level of project i.e.
    Lev_ WBSE_______Description
    1___ 7-14.E_______summay outage controller
    2___ 7-14.E.2310__ Plant/unit # 2310
    2___ 7-14.E.2310__ Plant/unit # 2220
    Project Controller  (authorization role assigned "Z_PS_OP7_OTGCON_C") have all project level authorization
    Plant/Unit Controller (authorization role assigned "Z_PS_OP7_PLNTOTG_C_2310") have only level 2 authorization with enhancement that we did in system by Z table.
    User ID_ Plant #
    123345_ 2310
    122455_ 2220
    Issue:
    After System Status released and User Status approved the WBS basic date for Plant/Units should be restricted from updating/changing by Plant/Unit Controller level and only project controller should have this authority.
    Solution required: 
    Can any one tell how to control this scenario either by standard or enhancement available to control authorization
    BR
    Saqib Usman   

    Hi,
    Did you explore SAP Enhancement CNEX0002 Using Transaction CMOD?
    Thank you and regards,
    Varshal Kachole
    The SCN Rules of Engagement

  • How to control the maximum size of a component in a GridBagLayout

    Here is a small program that demonstrates my issue (it's originally from a big program that I couldn't attach here).
    I have a GridBagLayout with some components in it. Some of the components are JEditorPane (displaying some HTML) within JPanel and are individally scrollable.
    Here we go:
    - when I resize the main panel, every components will resize accordingly to their weight (which is here the same for all of them): fine
    - when I reduce the size of the main panel until it reaches all the preferred size of each component, the scrollPane of the main panel appears so that the user can scroll: not fine
    The behaviour I'm looking for is: when I reduce the size of the main panel, when it reaches the preferred size of the components, I would like that the JEditorPane (which are in JPanel with BorderLayout/CENTER) display their individual scrollbars so that I can see all the JEditor panes at the same time without having to scroll the main window.
    If the user continues to reduce the size of the main panel, then, at one point, display the scrollpane of the main panel.
    See what I mean? How to control this?
    Here is the code:
    @SuppressWarnings("serial")
    public final class CGridBagLayout2 extends JFrame {
         JPanel mainPanel;
         private final JScrollPane scrollPane;
         private JPanel panelize(Component component, String localization) {
              JPanel output = new JPanel(new BorderLayout());          
              output.add(component, localization);
              return output;
        public void addComponentsToMainPanel() {
              mainPanel.setLayout(new GridBagLayout());
              GridBagConstraints c = new GridBagConstraints();
              c.weightx = 1.0;
              c.fill = GridBagConstraints.BOTH;
              String TEST_BIGTEXT = "<html><body><h2>Path</h2>toto/tutu/tata/TestN<h2>Prerequisites</h2>blah blah blah blah<br/><b>blah blah</b> blah blah\nblah blah <u>blah</u> blahblah blah blah<h2>Description</h2>blah blah blah blah<br/><b>blah blah</b> blah blah\nblah blah <u>blah</u> blahblah blah blah blah\nblah blah blah <br/>lah blah blah <br/>lah blah blah blah blah blah blah blah FIN</body></html>";
              for (int index=0; index<10; index++) {
                   c.gridheight = 5; // nb Testcases for this test
                   c.anchor = GridBagConstraints.FIRST_LINE_START; // align all the components top-left aligned
                   c.gridy = index;
                   JLabel a = new JLabel("AAAAA");
                   c.gridx = 0;
                   mainPanel.add(panelize(a, BorderLayout.NORTH), c);
                   JLabel b = new JLabel("BBBBB");
                   c.gridx = 1;
                   mainPanel.add(panelize(b, BorderLayout.NORTH), c);
                   JEditorPane d = new JEditorPane("text/html", TEST_BIGTEXT);               
                   c.gridx = 2;
                   mainPanel.add(panelize(d, BorderLayout.CENTER), c);
                   JEditorPane e = new JEditorPane("text/html", TEST_BIGTEXT);               
                   c.gridx = 3;
                   mainPanel.add(panelize(e, BorderLayout.CENTER), c);
                   index++;
         public CGridBagLayout2() {
              super("GridBagLayout");
              mainPanel = new JPanel();
              addComponentsToMainPanel();
              scrollPane = new JScrollPane(mainPanel);
              setContentPane(scrollPane);
         public static void main(String[] args) {
              Frame frame;
              WindowListener exitListener;
              exitListener = new WindowAdapter() {
                   @Override
                   public void windowClosing(WindowEvent e) {
                        Window window = e.getWindow();
                        window.setVisible(false);
                        window.dispose();
                        System.exit(0);
              frame = new CGridBagLayout2();
              frame.addWindowListener(exitListener);
              frame.setPreferredSize(new Dimension(1000, 800));
              frame.pack();
              frame.setVisible(true);
    }Many thanks in advance, I'm getting crazy on this one :)

    Ok, thanks for this information, I thought I had seen this happening in the past when embedding a component in the center area of a JPanel with BorderLayout.
    Anyway, as I said I tested with JScrollPane as well and it does not change anything.
    Here is the code modified:
    @SuppressWarnings("serial")
    public final class CGridBagLayout2 extends JFrame {
         JPanel mainPanel;
         private final JScrollPane scrollPane;
         private JPanel panelize(Component component, String localization) {
              JPanel output = new JPanel(new BorderLayout());          
              output.add(component, localization);
              return output;
        public void addComponentsToMainPanel() {
              mainPanel.setLayout(new GridBagLayout());
              GridBagConstraints c = new GridBagConstraints();
              c.weightx = 1.0;
              c.fill = GridBagConstraints.BOTH;
              String TEST_BIGTEXT = "<html><body><h2>Path</h2>toto/tutu/tata/TestN<h2>Prerequisites</h2>blah blah blah blah<br/><b>blah blah</b> blah blah\nblah blah <u>blah</u> blahblah blah blah<h2>Description</h2>blah blah blah blah<br/><b>blah blah</b> blah blah\nblah blah <u>blah</u> blahblah blah blah blah\nblah blah blah <br/>lah blah blah <br/>lah blah blah blah blah blah blah blah FIN</body></html>";
              for (int index=0; index<10; index++) {
                   c.gridheight = 5; // nb Testcases for this test
                   c.anchor = GridBagConstraints.FIRST_LINE_START; // align all the components top-left aligned
                   c.gridy = index;
                   JLabel a = new JLabel("AAAAA");
                   c.gridx = 0;
                   mainPanel.add(panelize(a, BorderLayout.NORTH), c);
                   JLabel b = new JLabel("BBBBB");
                   c.gridx = 1;
                   mainPanel.add(panelize(b, BorderLayout.NORTH), c);
                   JEditorPane d = new JEditorPane("text/html", TEST_BIGTEXT);               
                   c.gridx = 2;
                   mainPanel.add(panelize(new JScrollPane(d), BorderLayout.CENTER), c);
                   JEditorPane e = new JEditorPane("text/html", TEST_BIGTEXT);               
                   c.gridx = 3;
                   mainPanel.add(panelize(new JScrollPane(e), BorderLayout.CENTER), c);
         public CGridBagLayout2() {
              super("GridBagLayout");
              mainPanel = new JPanel();
              addComponentsToMainPanel();
              scrollPane = new JScrollPane(mainPanel);
              setContentPane(scrollPane);
         public static void main(String[] args) {
              Frame frame;
              WindowListener exitListener;
              exitListener = new WindowAdapter() {
                   @Override
                   public void windowClosing(WindowEvent e) {
                        Window window = e.getWindow();
                        window.setVisible(false);
                        window.dispose();
                        System.exit(0);
              frame = new CGridBagLayout2();
              frame.addWindowListener(exitListener);
              frame.setPreferredSize(new Dimension(1000, 800));
              frame.pack();
              frame.setVisible(true);
    }Edited by: eric_gavaldo on Sep 15, 2010 2:18 PM

  • How to Control Cheque value not exceed the PO Value

    Dear All,
    My client requirement of the how to control cheque make above the PO Value. My client make the PO before MIRO puchase dept. make the Advance payment request and send to Accounts Dept., Accounts dept. make the payment against the Down payment request. After that MIRO has been done full value open item show in vendor line itme. Account people clear the payment against the invoice. They run the APP & clear all payment.  But after that Purchase dept. make the advance payment request against same PO and send to accounts dept., Accounts dept again make the payment against down payment request. This is request to how to control that.
    Thanks in Advance
    (CSB)

    hi,
    here in this case you should change the Business Process to have better control over the system.
    Make the PO then make the Down Payment Request and make the payment.
    check is there any user exit available while making the down payment request which should not be made more than the po value.

  • STO- How to control Over delivery with batch split?

    Dear All,
    In STO Scenario, how to control the over delivery?
    I created a PO for the Intra Company stock transfer & Delivery created in the Background with the T Code VL10B. When I am doing picking using T code VL02N, the system is allowing to add  more than PO Quantity in batches and system displaying the warning message (Specified quantity is greater than the open quantity/Message no. VL287) & allowing to save the deliver document..
    Hence plz suggest how to restrict the same.
    Hope it is clear.
    Thanks & Regards
    varun

    I am also in the same boat.
    I searched the forum and got the link STO - How to control Over delivery ?
    I checked OSS notes 548914, 386340,215488 but to no avail.
    I suggested user exit USEREXIT_SAVE_DOCUMENT_PREPARE  in include MV50AFZ1 to my technical team for finding the resolution. So far it is still on hold.
    If you come across any other solution, you can update the forum so that it would be helpful for many others.
    Regards,

  • How to control po item from pr can't been changed manually?

    when i create po via pr. the item can been modified.it is not permitted. how to control the behave in system.

    hi
    while creating a PO wrt PR if the user changes the item then we will get the warning Purchase requisition &, item &, has a different material number but we will not consider it.
    if we do not want to continue
    goto SPRO - MATERIAL MANAGEMENT - PURCHASING -ENVIRONMENT DATA -DEFINE ATTRIBUTES OF SYSTEM MESSAGES -SYSTEM MESSAGES -VERSION 00 APPLICATION AREA 06 NUMBER 56 MESSAGE TEXT Purchase requisition &, item &, has a different material number , u change the categeory from warning to ERROR
    then automatically when ever ur doing po wrt pr when we change the item automatically the system issues an error message

Maybe you are looking for