Bryll
MrPLC Member-
Content count
349 -
Joined
-
Last visited
Posts posted by Bryll
-
-
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 ? -
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. -
Read the following registers: D8010 Actual scan time D8011 Shortest scan time D8012 Longest scan time All values are in units of 0,1mS -
Yes, I looked at that solution too. I will put in a 1200 to do the job, the smallest one I can find. Thanks to all for your help -
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. -
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. -
Thanks, the customer will be happy now. The price for the licens is roughly ten times the price for a small 1200 system and a switch. -
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 ? -
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 -
What I can see in the manual, should the function DEVAL do the job just fine converting the E-notation ASCII string value to binary floating point -
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 -
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 -
DDABIN seems to be the correct one for the Int. decimal value -
DEVAL would do the job for the real values I think -
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 -
Am I wrong, or shouldn't the remote port be 502 when using modbus TCP ? -
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. -
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 -
I don't know much about the Vijeo Citect or the M340 PLC. But what I experienced with other equipment is that port 502 is used for Modbus TCP/IP. In some equipment isn't the port open for use, unless the system is capable to use the Modbus communication. -
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.zip1 person likes this -
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" :) -
Here's one example (GX IEC Developer). -
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 -
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 ?
Strange values
in Siemens
Posted