AndreasW

MrPLC Member
  • Content count

    52
  • Joined

  • Last visited

Community Reputation

13 Good

1 Follower

About AndreasW

  • Rank
    Sparky

Profile Information

  • Country Germany
  1. TIA Portal: what's wrong with my sequence?

    Hi, if you push the Jump_Step ("Finish Step") this will set 'Step_1_Done' (Network1), then in Network2 both steps are executed in the same process cycle, so it jumps directly to network3/step3. To Prevent this you should check that 'Step_1_Done' is not set ( in Network3 use 'Step_2_Done', and so on)      
  2. RS422 pinout

    Hi, don't know if this is what you need, but for the GOT have a look at the GOT2000 Connection Manual, chapter 2.3.2, page 2-14 (Microcomputer connection, serial, RS422 cable) shows a pin assignment https://si3a.mitsubishielectric.com/fa/sl/dl/11079/SH(NA)-081200ENG-W.pdf for the FX3U https://eu3a.mitsubishielectric.com/fa/en/dl/1191/137315.pdf, page 2-44, tab 2-19 and https://www.allied-automation.com/wp-content/uploads/2015/02/MITSUBISHI_FX3GFX3UFX3UC-Users-Manual-%E2%80%93-Data-Communications-Networking.pdf chapter H (Programming communication)  H4.2 (Cable connection diagrams) (page 682)  
  3. Axis Permanent Control

    you have to be a bit more specific, what do you want to achieve? as I understand it, you want an axis to track depending on a value (should a position or speed be tracked?) what is the response time, how do you control the axis (A/B phase via output or via SSCNET and positioning module?). In the simplest case monitor the corresponding value in the PLC for change and set a corresponding move command, if the normal cycle time is too slow use an interrupt for monitoring/control.
  4. Hi Transistor, good that it works again. The Module lablels are added to the Structured Data types after inserting an module in the Module Configuration (if using module labels is enabled). after changing the module configuration or if using another gx3/module library version it can happens that the module labels won't match, in this case you should delete the labels and recreate them. this also can occure when you accidentally delete an type. in this case you can't compile/rebuild and the labels stay 'red'. in this case delete the module labels an recreate them (seen next image)
  5. the first message indicates that there is an mismatch in the structured data types of the automatic module labels (did you change the module configuration or gx3 version?). Maybe it helps if you recreate the module labels. you should check the plc error code using [Diagnositc]=> [Module Diagnostic (CPU Diagnostic)], maybe this helps  
  6. Hello Transistor, check if there is enough free memory in the PLC, the free memory is shown at the bottom of the transfer dialog. If everything is transferred, also the device and label comments are transferred, then the free memory may be too small. In this case it helps not to save the comments in the PLC. It may also help to load the parameters and the program separately into the PLC, i.e. first write the parameters (CPU+ module parameters), then reset the PLC and then write the program (label + FBFiles). If not already done, you should also read out all actual values from the PLC (device memory), so that these can be restored if necessary, this can save a lot of time and work. good luck  
  7. Servo tuning

    as glavanov wrote it depends on the type of servo and inverter. At the moment I know only MRJ3 and MRJ4 inverters and the software MR-Configurator2, therefore the following information refers only to the two inverter types, but should work in principle also with other inverter types. When using auto-tuning via the inverter, the number of output pulses as well as the type (High/Standard/Low) can be set. I would position the axis approximately in the center of the travel range before auto-tuning is started. At the first run I would choose the number of output pulses so small that less than one motor revolution takes place (Attention: if due to the gear factor one motor revolution is already too much, then less). The distance travelled by the axis during auto-tuning is usually much greater than the real distance travelled during the corresponding revolution, this depends largely on the setting of the permissible 'overshoot amount'. Afterwards, the number of output impulses can be increased so that the largest possible driving range of the axis is covered. The auto-tuning usually works relavtivly well, if you have vertical axles and/or off-center loads one must mostly still adjust the resonance filter somewhat. Good luck
  8. MITSUBISHI SERVO DRIVE MRJ4 200 A RJ

    hi vipin, you should check the servo setup.With regard to the travel distance, there are two essential parameters - number of pulse per rotation (depends of encoder resolution) - movement amount per rotation (including the gear ration) I would first compare these two settings    
  9. Mitsubishi FX5 read/write from PC with nodejs

    no you can't read data from the sd card by SLMP/MC-Protocol, but you can use the FTP functions to access the sd-card, hava a look at chapter 8 and 9 of the Ethernet Communication manual https://dl.mitsubishielectric.com/dl/fa/document/manual/plcf/jy997d56201/jy997d56201q.pdf  
  10. Mitsubishi FX5 read/write from PC with nodejs

    To read D2050 the string should be "01FF000A4420000008020100" "01 FF 000A 4420 00000802 01 00"    --> 01 (cmd)... batch read 1 word unit --> FF (pcnr, fixed) --> 000A (timeout 10x250ms= 2.5sec) --> 4420 (devcode for d-register) --> 00000802 (start adress in hex h802= decimal 2050) --> 01 (counter in hex= h01= decimal 01 = 1 register) --> 00 (end, fixed)    
  11. Mitsubishi FX5 read/write from PC with nodejs

    the node.js code was just an example, the connection is closed by the client.end() command set after receiving the response from the plc. if you wan't to check every 2-3 seconds you can use the setInterval methode, something like this: but this is also just an example:     const Net = require('net');         // Include Nodejs' net module. const port = 8080;                  // The port number and hostname of the plc. const host = 'localhost'; const requestString= '04010001A8000001000A';    // the RequestString to READ your data from the plc const client = new Net.Socket();    // create socket let requestInterval= null;          // request interval let timeout= null;                  // request timeout // EndConnection, called to destroy the socket and clear request interval and timeout function EndConnection() {     if (requestInterval != null)     {         clearInterval(requestInterval);         requestInterval= null;     }     if (timeout != null)     {         clearTimeout(timeout);         timeout= null;     }     console.debug('disconnect from plc, terminate connection');     client.destroy(); } // ReadDataFromPLC, send RequestString to plc function ReadDataFromPLC() {     // check if socket is ready     if (client.readyState != 'open')     {   // socket not connected,         console.debug('error: socket/plc not ready for sending ReadRequest');         EndConnection();     }     else     {   // socket is ready, check if Timeout for last ReadRequest occured         if (timeout== null)         {   // socket is open, send 'ReadRequest' to plc and set timeout for the response,             // timeout will cleared when data received from plc             // !!!! TimeOut 'time' should be smaller than Interval 'time'             console.debug('send Request to plc....');             client.write(requestString, ()=>{                 timeout= setTimeout(()=> {                     console.debug('error: timeout occured, no data received for last ReadRequest');                     EndConnection();                 }, 1500);             });         }         else{             // if there is no response from the plc for the last ReadRequest,             // don't send a new readRequest             console.debug('error: no data received for last ReadRequest ');             EndConnection();         }     } } // connect to plc, set Interval to 3seconds (3000ms) client.connect({ port: port, host: host }, function() {     console.debug('TCP connection established with the plc.');     requestInterval= setInterval( ReadDataFromPLC, 3000); }); // handle connection termination, e.g. server/plc close connection client.on('end', function() {     console.debug('Requested an end to the TCP connection');     EndConnection(); }); // handle socket error client.on('error', function(err) {     console.log(`socket error occured ${err.toString()}`);     EndConnection(); }); // handle response from plc client.on('data', function(chunk) {     console.debug(`Data received from the plc: ${chunk.toString()}.`);     // clear TimeOut for ReadRequest     if (timeout != null)     {            clearTimeout(timeout);         timeout= null;     }     /////////////////////////////////////////////////////     // TODO: check received data, verify response string,     ///////////////////////////////////////////////////// });          
  12. Specific Time to energize an output

    you can compare the data register or use the tcmp function M0 is an internal relay, not an output. Outputs are Y___ eg. Y1 If you SET M or Y it will stay on and doesn't get reset. Either you add a RST command to reset the relay/output or you can use a self-holding of the output using an timer e.g. T0 is a 100ms Timer, so T0 K10 means 1second e.g check which outputs and timers you can use so that they do not collide with the existing PLC program      
  13. Specific Time to energize an output

    in general, the internal clock of the plc can be used for this purpose. the internal clock can be queried in the program via special registers (depending on the plc type) and can be used to switch an output. However, it must be taken into account that the internal clock of the plc usually does not run completely accurately over a longer period of time and that it shows a deviation after some time. Ideally, the plc should be able to synchronize its clock, for example using a NTP server (network time protocol) available in the network (if plc has ethernet), although not all FX CPUs support this. also the summer/winter time changeover is mostly still to be considered, since this won't change automatically. I think the main problem is therefore not so much to switch an output at a given time, but rather to have the clock of the plc accurate.    
  14. E1101 Controller Data Exchange

    i think this should be possible with the device data transfer function, see chapter 9.4 in the screen design manual http://www.factoryautmation.com/downloadfile/D2119_Mitsubishi_sh081220engl.pdf, never used it with modbus, only with two plc, but i think if you can add a second controller of type MODBUS it should work, but you have tor try it. be sure to install the required modbus driver and the data transfer system package (system application) in the GOT (see chapter 4.2 in the manual).    
  15. E1101 Controller Data Exchange

    hi, i think 400000 should be the function code for read holding register, maybe you will find more information inside the MDOBUS driver manual for the E-Series http://suport.siriustrading.ro/02.DocArh/09.MS/02.HMI/02.MAC,E,E1000/04.Manuale%20drivere/02.Drivere%20Terti/Modbus%20Master%20ASCII,%20RTU,%20TCP%20-%20Manual%20Driver%20MA-00344-B%20(03.01).PDF