
Content count
647 
Joined

Last visited
Content Type
Profiles
Forums
Downloads
Calendar
Everything posted by Inntele

What is the benefit of using Structured programming?
Inntele replied to wlederer's topic in Mitsubishi
Dear wlederer, 1. The PLC manufacturers has an interest in big sales. The structured programming reduce the time for project development and it's comissioning, especially if the project has a huge volume. Thus, the system integrators are able to implement more projects in the same time interval, i.e. they will use more SPS during the same period. Other words, the goal of investment is present for both sides (manufacturer and customer), both will get more money profit in annual. 2. You may ask, why the first item does not work? The PLC manufacturer managers does not understand anything in PLC programming issues. The developers of programming software tool does not understand anything in it too. Only software engineer may know in what he is really need! That to obtain a good result in programming software development a close feedback from the PLC engineers is necessary. But the first pair is convinced that they are much more clever and coolest than the last. 3. Even if the PLC manufacturer has managed to create a successful development tool, it's not enough for the final effect (to increase the profit). It's need to organize an effective education for its customers, i.e. for the PLC programmers, working for system integrators. But how the manufacturer can do it, if he does not have an own department of automation project development thus own engineers (teachers) does not have an experience of implemention real projects?? In this case such education of wide circle of customers can be provided only with participation of talented PLC programmers, working for system integrators, that are alone learned and tested all possibility of the SW. But what system integrator would like to multiply competitors for himself?? I could share here with items 4, 5 etc. that prevents for Mitsu (and some other manufacturers) to create an excellent programming tool. And for customers does not allow to get and use a good programming tool, to get a good education and knowledge in effective using of new programming products and all their capabilities. But for whom these arguments will be useful?.. *** If you or somebody else there want to feel and understand in what are the benefits of structured programming, I could offer two way. The first is I can share the ready programs, written by me, that it might given a chance to learn and analyze the technique of programming alone. The issue for english speaking people is all comments in these programs are in Russian... The second is a tutoring. This way requires a time and serious efforts by my side. The advantage of this way is that together we will develop a new existing project(s). The drawback is that this way is costly for pupils, because a time of tutor and his nervous is the money. For a PLC programmer has a meaning to pay from own pocket for this tutoring in case he'd like to rise his level higher and to leave from the current company to get a higher salary. For the employer has a meaning to pay for the tutoring in case he understand that such tutoring will bring him a greater money than he spent. In practice, the first category is not ready to pay, at minimum, due their current salary does not allow to pay for the tutoring, both and they are don't sure that it will allow to find a better job. The second category don't ready to pay, because: 1) they are don't feel and understand a huge difference between seminars and workshops, providing by PLC manufacturer, and a tutoring; 2) they are prefer official certificates by manufacturers in comparision to get a market superiority on which they are making money;3) they are not sure that when they will spend the money for study of the employe, they are not losing the spent money toghether with the employe... Kind regards, 
What is the benefit of using Structured programming?
Inntele replied to wlederer's topic in Mitsubishi
Hi ParaffinPower, Mitsu manufactures products that are quite reliable... in a technicial plane. The issue is a stupid management and bad documentations, a cheesy software. If to say about the management, I know two people (in Europe), which are qualified specialists and good guys. However they are workinkg under a very stupid leadership. I'm very, very angry to Mitsu management for a lot of issues, they created and continues to create. I'd with a great pleasant thrown the Mitsu to a bin, but I spent about 20 years of my life using this equipment. 
What is the benefit of using Structured programming?
Inntele replied to wlederer's topic in Mitsubishi
Heh, Ron_S, It's funny. But for me it is so melancholy.... 
What is the benefit of using Structured programming?
Inntele replied to wlederer's topic in Mitsubishi
Dear wlederer, Yes, absolutely. The single thing, I don't understand how I can able to help you to estimate all advantages. It looks very difficult, in particulary if to take into account that my spoken English is not so good( 
What is the benefit of using Structured programming?
Inntele replied to wlederer's topic in Mitsubishi
wlederer, your conclusions are very and very strange. Everything is exactly the opposite. 
The main thing, which I'm considering as critical, the MAPS doesn't work principally under home version of Windows. That does not allow to estimate preliminary, will it suitable for the current project. This fact has kicked me to find better product, and I found it...

Welcome

Kinco manufacture HMIs with func.keys. SZ/CZ series http://en.kinco.cn/product/hmi

1. It's imposible to answer, not seeing your program. 2. There is not neccessary to transfer an array to the FB. It's easier to define it in GVL and then to access to its elements inside the FB by array index.

collinsd70, INT_TO_BITARR 16 = MOV Dxxxx K4Myyyyy. It's just an IEC interpretation of MELSEC command instruction.

No. If you want to check a specified bit of the word, you should move the word to the bit memory. LD TRUE MOV D200 K4M200 LD M204 OUT Y0 The index registers can not be used for this purpose too. It can be done by a complex way: LD TRUE MOV D200 K4M200 MOV K1M200Z K1M200 LD M200 OUT Y0 Read the programming manual carefully. There is written all.

1. To the PLC it is necessary to transfer only three values: k, Xi2, Xi1. This should be done just ONCE , BEFORE the sine wave calculation. 2. To provide the requirement of item 1 you should not use a PLC input to activate the command sequence, a marker has to be used for this purpose. How the item 1 and 2 can be realized in HMI: if ([b:X1= 1] & [b:M1= 0]){ set ([b:M1]) ; //if X1=1 & M1=0, then set M1 (SineWave Flag) [flt:GD400]= ... ; //dAngle= Pi*Freq*Tscan/500 [flt:GD402]= ... ; //k= 2*cos(dAngle) [flt:GD404]= ... ; //Xi2= Amp*sin(dAngle) [flt:GD406]= 0 ; //Xi1= 0 bmov ([w:GD402],[w:D400],6)}; // transfer the precalculated values into the appropriate PLC registers if ([b:X1= 0]){ rst ([b:M1])} ; //if X1= 0 , then reset M1 (SineWave Flag) 3. Check carefully the predefined values calculations in HMI. The k value must be positive, and the xi2 value must be negative! 4. The code in PLC should look as is shown below, except of the code must be activated with a SineWave Flag (M1) 5. Decrease the value of sine wave frequency (52,4 is too high), increase the amplitude of sine wave, otherwise in the analog output you get a direct line, instead of desired sine wave.

I strongly recommend you to use the second algorithm of sine wave calculation, proposed by me. In what are you wrong: As I said already, in contrast to D8010 the D8039 is represented in 1ms value. Pls, take it into account! Also you should remember, that if the scan time will be set as 10ms, at the mentioned 10Hz, you'll get 1/(10Hz*0,01s)=10 points only. At 1Hz you'll get 100points. With 4ms scan time at 10Hz you'll get 25 points, with 2ms scan time  50 points of a sine wave amplitude, and with 1ms scan time  100 points. Having a GOT HMI, that able to calculate trigonometric function, you don't need to implement this calculation using a Taylor series... Before to start the simulation of sine wave In PLC, calculate in HMI the differential angle: dAngle = Pi*D8039*Freq/500, if the Freq is represented directly as REAL, or dAngle = Pi*FLT(D8039*Freq)/5000 , if the Freq is represented as INT in 0,1Hz units. Because the D8039 is set by you, you just can use a constant instead of register value. Then calculate in HMI: k = 2*COS(dAngle) Xi2 = Amp*SIN(dAngle) Xi1 = 0 and write these values into PLC, The code in PLC is following: LD SineWave DEMUL k Xi1 Xi DESUB Xi Xi2 Xi DEMOV Xi1 Xi2 DEMOV Xi Xi1 Then value of xi2 can be converted into INT to sent it to the assigned channel of Analog Output Module. That's all that you need to do. If questions will appear when the abovementioned steps are relized by you , pls don't hesitate to ask

Yes, for a quite high accuracy the polynom should has at least 4 elements, i.e. sin(x)= x  x^3/3! + x^5/5!  x^7/7! . Why? When x is in the range of 1<=x<=1, the maximum approximation error is 1/9! = 2,76*10^6, i.e. is less than 0,0003%, while with 3 elements the maximum error is 1/7! = 0,02%. Don't use the first algorithm of sine wave calculation, proposed by me! At 2*Pi angle the approximation by Taylor polynom using 5 elements will give a value (2*Pi)^9/9!=42 and the error about 350%.

Let 'begin from the end. Yes, when I say about a constant scan time I mean the D8039. The value of D8010 is measured in 0.1ms units, while the D8039 is meaning in 1ms. Thus, if the value in D8039=100, the D8010 will be equal to 1000 and the scan time will take a 100ms. However ... The scan time of 100ms is a too much value for the FX3 PLC series. A typical scan time is from 4 to 10ms, and the abovementioned values is valid for programs with greatly complex algoritms. Also, if you are set a scan time as 100ms, for the 1Hz frequency of sine wave you'll just get 10 points of curve... (in case of 0,5Hz you'd just get 20 points).

Generally, how to calculate the instant amplitude of a sine wave in scanning. At the first stage it is necessary to perform the initial calculation: k = 2*COS(Tscan*Freq*Pi/50000) Xi1 = Amp*SIN(Phase) Xi2 = Amp*SIN(Tscan*Freq*Pi/50000 + Phase) where: Tscan  the PLC scan time (a constant scan) [0,1ms] Freq  the frequency of a sine wave [0,1Hz] Amp  the amplitude of a sine wave Phase  the phase shift of a sine wave Then in each scan it is necessary to perform the operations: Xi = k * Xi1  Xi2 Xi2 = Xi1 Xi1 = Xi The instant amplitude of a sine wave at the current scan is stored in Xi2. Example: Amp = 10 Offset = Pi/3 Freq = 1,3Hz Tscan = 4ms How to calculate the initial values in PLC, which does not support trigonometric operations, but supports a square root: k = Tscan * Freq ;Calculation k = SIN(Tscan*Freq*Pi/50000) by PLC implementation of Taylor series k = k * Pi k = k / 50000 k = SIN(k) Xi1 = SIN(Phase) ;Calculation Xi1 = SIN(Phase) by PLC implementation of Taylor series Xi2 = Xi1 * Xi1 ;Calculation Xi2 = COS(Phase) = SQRT(1Xi1*Xi1) Xi2 = 1  Xi2 Xi2 = SQRT(Xi2) Xi2 = k * Xi2 ;Calculation Xi2 = SIN(Tscan*Freq*Pi/50000)*COS(Phase) k = k * k ;Calculation k = COS(Tscan*Freq*Pi/50000) = SQRT(1k*k) k = 1  k k = SQRT(k) Xi = k * Xi1 ;Calculation Xi = COS(Tscan*Freq*Pi/50000)*SIN(Phase) Xi2 = Xi2 + Xi ;Calculation Xi2 = SIN(Tscan*Freq*Pi/50000 + Phase) k = 2 * k ;Calculation k = 2*COS(Tscan*Freq*Pi/50000) Xi1 = Amp * Xi1 ;Calculation Xi1 = Amp*SIN(Phase) Xi2 = Amp * Xi2 ;Calculation Xi2 = Amp*SIN(Tscan*Freq*Pi/50000 + Phase) How to implement a SIN calculation using a Taylor series is shown there .

P.P.S. In the Internet I found a veryvery simple algorithm for a sequental calculations of a sine wave amplitude, which is easy to implement in PLC. Preliminary, to test I've modeled it using the Excel and the result for 1.3Hz at 4ms constant scan time is shown on the figure below: The algoritm requires only 8 registers (4 REAL). Initially it is necessary to calculate two values: a coefficient and a starting value: k= 2 * COS ( 2 * Pi * Freq [0,1Hz] * Tscan[0,1ms] / 100000 ) and Xi2 = 1 * SIN ( 2 * Pi * Freq[0,1Hz] * Tscan[0,1ms] /100000 ) Also it is need to assign a sine wave amplitude at 0 angle: Xi1=0 What it gives? If the Freq and Tscan values are predefined, the k and Xi2 can be precalculated by usual calculatator. Then in the scan a current amplitude of sine wave can be calculated by following formula: Xi = k*Xi1  Xi2 After that the calculated value of sine wave amplitude can be scaled for AO.

No, have not a new, i've thoughly tested this algorithm and it works fine. Just about the initial caculation of Xi2 in PLC. With traditional Taylor series it's easier: Xi2 = Freq[0,1Hz] * Tscan[0,1ms] * Pi / 50000 b = Xi2 a = b * b b = b * a / 6 Xi2 = Xi2 + b b = b * a / 20 Xi2 = Xi2 + b b = b * a / 42 Xi2 = Xi2 + b But you can implement this initial calculation with HMI script.

P.P.P.S. How to calculate the initial values in FX3G PLC directly: Xi2 = Freq[0,1Hz] * Tscan[0,1ms] * Pi / 50000 k = 2 * ESQR ( 1  Xi2 * Xi2) The first equation is valid for infrasonic frequencies. In other case, a calculation should be implemented by Taylor series: а = ( Freq[0,1Hz] * Tscan[0,1ms]  25000 ) * Pi / 50000 Xi2 = 1 a = a * a / 2 Xi2 = Xi2  a b = a * a / 6 Xi2 = Xi2  b b = a * b / 15 Xi2 = Xi2  b b = a * b / 28 Xi2 = Xi2  b b = a * b / 45 Xi2 = Xi2  b

P.S. Steps 6 and 7 can be implemented in a loop format, using a table of dividers. In this case x7/7! , x9/9! etc. can be easy calculated to provide a higher accuracy of sine wave calculation.

Hope, now you and your topbrass are aware that a choice of FX3G for the current application was wrong and the FX3U should be used. However, the choice has been made ... How I'd solved the problem, using FX3G and not using array... I'd calculate in PLC the instanteous amplitude of the sine wave using Taylor series, i.e. sinx = x  x3/3! + x5/5!  .... in each scan or with a time interval according to DAC operational time. How to realize this calculation stepbystep: 1) For that purpose is need to accumulate a scan time, i.e. at each scan is need to add a time of previous scan, which is stored in D8010 (0,1ms units). 2) The accumulated value (DINT) is need convert to into REAL then to multiply with Frequency value [0,1Hz units]. 3) Because a time value is represented in 0,1ms and a frequency value is represented in 0,1Hz it is need to compare the result with 100000 (the equivalent for 2*PI angle). If the calculated value is greater than or equal to 100000, then is need to reset the accumulated value of scan time. 4) The result of previous calculation is need to multiply with 2*PI/100000. Thus we get xoperand. 5) The result of previous calculation is need to multiply with itself to get x2. The result of this operation is important to save separately of x, both and of other values, because it will be used in following calculations. 6) x2 is need to multiply with x and the result to divide with 6. Thus we get x3/3! and can add it to x. Thus we get a x  x3/3! in the cell, where x stored. 7) x3/3 is need to multiply with x2 and to divide with 20. Thus we get x5/5! and can add it to x. Thus we get a x  x3/3! + x5/5! in the cell, where x stored. 8) Then the result is need to multiply with the signal amplitude (the digital value that should be transferred to the channel of analog output module) and finally to convert it into INT.

plat993x, what the model of PLC do you use?

Thanks plat993x, Now is clear what do you need) Pls, give me a time to think, it's not an easy task.

Yes, I did not check are other models support any interface, like the 8670 has.

I can't estimate what is a distance on the whole plant.... Just a simple reason: the solution, I propose, is cheaper and easier than was described by you.