Bryll

MrPLC Member
  • Content count

    349
  • Joined

  • Last visited

Posts posted by Bryll


  1. Some more info regarding the problem. In the PLC is two DINT declared (MD26 and MD30) and transferred to the HMI. The HMI has two bargraphs and two decimal value fields for the two DINT's The tag list in the PLC and the one in the HMI are identical, I double checked this a couple of times. Now to the strange thing. One is correct and the other one is corrupt. The corrupt one starts over from zero if the value goes over 65 534. Everything is compiled and transferred to the HMI and PLC several times without any correction of the behaviour. This is such a simple thing so it should work right away. Anyone with a good idea where the problem is ?

  2. I have a project with a 317F CPU (Program made in Step 7 Classic) and a TP1500 Comfort (Made in TIA Portal V11) communicating on the MPI bus. I'm reading two analog values that I scale to show an airflow value between 0 to 80 000 m3/h (DINT). The PLC shows the correct decimal values up to 80 000 when monitoring online. But, when I try to display it in the terminal as a bargraph and a decimal value is the highest value 65 534 (2 x 32 767) and for values over that starts from zero and counts up. Everything is declared as DINT, but the panel is displaying as if it was an UINT. I've checked for errors made by me all over the project, but I cant find anything. Any good ideas ?

  3. FX3U data Basic Instructions: 0.065 µs / instruction (Contact Instruction) Applied Instructions: 0.642 µs / instruction (MOV Instruction) FX3G data Basic Instructions: 0.21µs / instruction (Contact Instruction) That's from Mitsubishis web FX3U is faster than FX3G Never had time critical issues so I had to calculate the scan time before.

  4. I made som changes to your network, you might already have tested them yourself. What version of GX IEC Dev. are you using? Try "Ctrl - Shift - M" when you are in editing mode, to switch between "Identifier, MIT address, and IEC address". Makes it easier to see what addresses you are using, you don't have to scroll up and down in the global variable list.

  5. I guess you are writing your program in ladder or function block. You can find that "error step" by "right click" in the editing window and select "Show Melsec Code of networks". The program will then show the "instruction list code" row by row, and you will be able to see what's wrong, or at least where the error is. Edit: This is what the help text displays regarding your error (you'll probably already seen it). Error code list[Error code 6612] Applicable Machine FX series PLC ===================================================================================== Error code(D8066) 6612 Error messages CIRCUIT ERROR Step Number of error D8069 LED status(RUN) OFF LED status(PROG.E) Flash PLC ACT STATUS STOP Diagnosis timing When program is changed(STOP). When program is transferred(STOP). Power is turned ON. Initial STOP to RUN setting after Power ON. Error contents and causes Number of LD/LDI instructions is more than ANB/ORB instructions. Managing method A CIRCUIT ERROR occurs if a combination of instruction is incorrect or badly specified. Select programming mode and correct the identified ERROR.

  6. I have a 315 cpu with a CM343-1 communication module for ethernet communication, that now also shall collect data from another system. The thing is that we now shall collect the recently added units data by using Modbus TCP. That's no problem to do with the 315 cpu, as long as you buy the silly expensive licens for it. I know that it's very easy to exchange data via the ethernet cable by connecting the 315 to a 1200 system (done it before). Since I can buy almost a box of 1200 systems for the same money they ask for a 315 Modbus TCP licens, do I have some questions. The questions are: Is the 1200 capable of Modbus TCP communication ? Do I need a silly expensive licens for that one too ?

  7. Before the requested "data string" is decoded with a FOR-NEXT loop have I checked that the following is the same I asked for: Network number Node number Message ID (same ID sent by master, shall be returned by slave) Command (OK) Recieved data is not abnormal and of the same type I asked for (Bool, DINT or REAL). If any of the above is incorrect, will I set an error code and jump out of the RX routine. Data will be requested one more time from the slave, if incorrect a second time will an alarm be given, and jump to next TX message. Haven't decided yet if CRC is needed or not. Got the information from the customer that he will scrap one machine and send me the control unit for evaluation of the protocol. Makes life a bit easier I guess

  8. I have no problem with the FOR-NEXT loop, used it before. But, regarding the floating point values do I have to worry All the interesting temperature and pressure data I have to use to control the capacity of the units are in this REAL value. It might be a challenge

  9. I'm not really there yet. This is a part of a project I try to prepare in advance. Guess I need to use pointers and the FOR - Next loop. A read command (without CRC) can look like this: "LineFeed" <010203RD -41"CarriageReturn" (there is a SPACE CHAR [0x20] between RD and -41) < = Direction of message, < = command from master, > = reply from slave. 01 = Network Number 02 = Node Number 03 = Message Id RD = Read Command -41 = Real Value Register 1 The reply (if OK) will look like this: "LineFeed">010203OK -1.23400E+01"CarriageReturn" (the space is here placed behind OK) If the master sends a CRC, is it placed before the "CR" and can look like this "&D5". The slave will then reply with a CRC as well. It would be nice to have some hardware to try this out on, but I guess I have to do it with the customer standing behind me breathing in my neck

  10. I'm currently working on this project again, the customer put it on hold for a couple of months. The data to and from the external devices is in ASCII. Data returned can be in boolean, integer value and real value. Boolean data can look like this: #00000000 to #FFFFFFFF. Real values can look like this: 1.2E-38 to 3.4E38. Integer values can look like this: -2147483648 to 2147483647. What I have to do is to decode it and store the result in a 32-bit register. Boolean data no problem, but does anyone have any good idea how to decode the real data and store it ? Same for the Integer values? I'm currently working on a FOR - NEXT loop to decode the data, since the RS2 function puts every ASCII character in separate registers. Any idea would be much appreciated

  11. Don't know if it works with GX Works (I'm using GX IEC Dev) But have you tried the ROR or ROL function? ROR - Rotate Right without carry flag. ROL - Rotate Left without carry flag. RCR - Rotate Right through carry flag. RCL - Rotate Left through carry flag. I think the function ROR is named ROR_2_M in GX Works.

  12. Why do you use 2 x FX3U-485MB-ADP ? I use one FX3U-485BD and one FX3U-485MB-ADP when I have use for two Modbus channels. The expansion card (485BD) is used as Channel 1, and the expansion module (485MB-ADP) is used as channel 2. When using the 485BD card, you don't need to buy any adapter card for the first 485MB-ADP. The 485BD is much cheaper than the 485MB-ADP too I have noticed one thing when using the MB-ADP as a channel 2 Modbus slave. It's that you can't write 16#1C81 (RS485_9600_8N1) as the examples for channel 1 settings shows for the 485BD card. To get it up and running as a slave did I have to write 16#1081. When it is used as master will it be ok to write 16#1C81 or 16#1081. Best of luck with your communication

  13. I think the attached picture from the programming manual can describe Data and File registers better than I can with my poor English. Attached also a function block I made for the FX2N-AD for a project. Just unzip the file and import it. Hope it helps DataReg_FileReg.bmp FX2NDA_Output.zip
    1 person likes this

  14. You could also use the "TIMER_100_FB_M". This one is using an INT to set the delay time in units of 100mS, the value 300 is then 30 seconds. The inputs are: Coil - Your trigger signal for the timer to start. Preset - Your Integer with the delay value. ValueIn - Haven't used this myself, but I think you can specify a start value for the timer to start counting at. Just delete the input when trying the timer. Outputs are: ValueOut - The counter value of the timers delay time. Status - The output that goes high when the timer done its delay and the input still is high. There's also a 10mS timer you can use aswell, of course is it named "TIMER_10_FB_M" :)

  15. Would it be possible to control the visibility of your objects with the tag you ´select the PLC from? If M0=1 make object visible for PLC1 If M0=0 make object visible for PLC2

  16. I have only set up remote connections with the FX3U cpu and GX IEC Developer, so my questions might sound a bit stupid Is GX Works using port 5556 towards the cpu? GX IEC is using port 5551 to the FX3U. Did you activate the "Router Relay function" with the correct router IP address ?