## Simple Pulley Forces Tension and eTCL demo example calculator, numerical analysis

### Introduction

gold Here are some TCL calculations for the Simple Pulley Forces and Tension. The impetus for these calculations was checking the loads, rope tension forces, and developing safety flags on a simple pulley system for industry. This calculator was designed for industry; do not use this calculator for the entertainment, rescue, or stage. Most of the testcases involve replicas or models, using assumptions and rules of thumb. The output units can be changed in the internal calculator formulas as TCL code. Any convenient and consistent output units might be used like millimeters, inches, feet, or dollars to donuts.

### Simple Pulley Tension

The TCL calculator uses metric units as best understood. But to readers outside the USA who use the more rational metric system, the original problem sets in older college textbooks use English units as pounds and feet. Even the current USA manufacturing standards on nylon rope use English units. The calculations cover an angle from zero to 90 degrees on a simple pulley system and nylon rope. As a peg point, any bending of the nylon rope over a pulley, house beam, or tree branch reduces the strength of the rope to some extent. As a rule of thumb, the bending of a rope can reduce the rope load strength to as much as 25 percent of rated maximum load. The customary half inch nylon rope has a breakage limit of 5000 pounds for unbent rope and the normal safety ratio is 5:1. for industry only Meaning the theoretical safe load limit on the nylon rope is <expr 5000./5. > , 1000 pounds force, 454 kilograms (f/g)., or 4.5E3 newtons. The normal safety ratio is 5:1 for industry, but the entertainment industry or stage has much more strict standards with a 10:1 safety ratio. .From the manufacturer rope standards, a load of 1000 pounds is approaching the safe working load (SWL) or maximum working load of simple pulley systems using half inch nylon rope, either as a dead weight or considering the angle force multiplication factor.

The simple pulley hung on top of pole (crane) , house beam, or tree branch is at center of three forces as the top point or apex of a right triangle. The mass is strung on a vertical rope directly under the simple pulley. The calculator uses the height of the pulley above ground or floor and the horizontal distance to the puller to calculate Angle2 and the force vectors in a plane. The rope tension is usually measured or referenced to the rope tie above the pulley. Sum of forces acting on pulley point derives as Rope tension force = sqrt (2*cos(Angle2)*F2**2 + 2*F1**2). Angle1 is the look angle between height (|) and horizontal (_) , opposite altitude leg. The second Force F2 is acting through Angle2, which gives the cos(Angle2) factor in the equation for sum of forces. Angle2 is at pulley, between height (|) and hypotenuse (\). Further, Angle2 is called the stress angle opposite horizontal leg. In the program. the allowed range of Angle2 equals zero to ninety, 0-90 degs. While the TCL calculator screens use metric units, the problem set up is similar for the force vectors and relative mass-force units as pounds. For English pounds, enter pounds in mass slot and relative vectors in feet and the approximate tension in pounds should appear in check answer window.

Most pulleys and nylon ropes come with recommended safe loads from the manufacturer. The calculator problem set up assumes the same strength rope is used for all tie points. But it is clear that a reinforced tie or metal chain attachment above and retaining the pulley would be more secure in most situations. Wire rope clips, metal clamps, chain hoist hooks, and double saddle clamps are used to secure heavy loads as more secure than rope knots. Needless to say, the horizontal distance from the load to the puller has a safety aspect also. A person standing under a suspended heavy load or within the drop or fall distance is not safe. Probably, any horizontal distance for an involved human puller or involved workers should be greater than the 1.5 times height of the package lift distance or pulley height. The operational safety radius for non-involved persons and marking the safety zone with orange cones is generally 2 times the pulley height, as a rule of thumb.

### Load Warning Flags in Program

A safety warning flag or program error condition is suitable in the TCL calculator if any entered mass or set of problem angles goes over the safe load limit for the nylon rope. The warning flags for loads are " WARNING, mass entry exceeds safe limit" and " WARNING, estimated load exceeds safe limit". Also, any calculated Angle2 outside the 0-90 degree range is flagged as an error. The warning flags for excessive mass entries and calculated loads are catastrophic errors and the calculated load warning flags are given priority in the program over other possible errors. The warning flags are set separately in the program, so single or multiple warning flags are possible. Still checking program with hand calculations. Report will include null flags, as issues for program development. If an error is fired as text in the check answer slot and locks from the expected number (variable type) in the TCL program, three paths are possible as either 1) set check slot back to zero to continue, 2) clear, or 3) restart. As an alternate procedure, resetting the check entry slot back to zero (0), will allow user to continue lowering load until safe limit is found.

Current safety regulations for industry use establish a separate operational or working safety zone for involved personnel in the hoist operation and a second safety zone for the non-involved personnel and general public. The radius of danger or boundary for the operational working zone for involved personnel is set at 1.5X altitude. During the lift operation, the involved personnel should keep a distance of at least 1.5X altitude from the center of the hoist operation and the overhead load. The radius of danger or boundary safety zone for non-involved personnel, general public, and orange cones is set at 2X altitude. As a concept, the operational working zone for involved personnel is similar to a donot or concentric hollow core between the radius of the working boundary and the non-involved boundary. These working and safety zones are included in the report. The normal safe working load (SWL) is 5:1 for industry, but the entertainment industry, rescue, or stage has much more strict standards with a 10:1 safety ratio, safe working load. This calculator was designed for industry;do not use this calculator for the entertainment, rescue, or stage. Many countries, regions, and industries have different or updated standards for the SWL ratios and dimensions of the worker safety zones, so check your country, local authority, and company regulations for the current updates. However, all the available textbook vector problems do not consider safety zones and a possible (if range) error condition would fire every time on the gui screen.

### Push Button Operation

For the push buttons, the recommended procedure is push a testcase and fill frame, change first three entries etc, push solve, and then push report. Report allows copy and paste from console. For testcases in a computer session, the TCL calculator increments a new testcase number internally, eg. TC(1), TC(2)., TC(3), TC(4) etc. The testcase number is internal to the calculator and will not be printed until the report button is pushed for the current result numbers. The current result numbers will be cleared on the next solve button.

### Testcases Section

#### Testcase 1

table 1printed in tcl format
quantity value comment, if any
1:testcase_number
50.0 :mass kilograms:
20.0 :pulley height meters:
16.75 :horizontal distance meters:
4 :error flag logic 0, 1, 2, 3, 4 :
null flag1 :warning flag on entry :
null flag2 :warning flag on est. load :
null flag3 :warning flag on est. angle > 90 :
WARNING, horizontal distance inside danger zone :warning flag horizontal flag < 1.5X altitude :
30.0 :boundary working zone for involved personnel at 1.5X altitude, meters :
40.0 :boundary safety zone for non-involved and orange cones at 2X altitude, meters :
93.985 :check answer, force/g, approx. kg:
50.053 :angle1: degrees: angle1 is look angle, opposite altitude
39.946 :angle2: degrees: angle2 at pulley, opposite horizontal
921.681 :rope tension kg*m/sec*sec, newtons :

#### Testcase 2

table 1printed in tcl format
quantity value comment, if any
1:testcase_number
100.0 :mass kilograms:
50.0 :pulley height meters:
50.0 :horizontal distance meters:
4 :error flag logic 0, 1, 2, 3, 4 :
null flag1 :warning flag on entry :
null flag2 :warning flag on est. load :
null flag3 :warning flag on est. angle > 90 :
WARNING, horizontal distance inside danger zone :warning flag horizontal flag < 1.5X altitude :
75.0 :boundary working zone for involved personnel at 1.5X altitude, meters :
100.0 :boundary safety zone for non-involved and orange cones at 2X altitude, meters :
184.78 :check answer, force/g, approx. kg:
45.0 :angle1: degrees: angle1 is look angle, opposite altitude
45.0 :angle2: degrees: angle2 at pulley, opposite horizontal
1812.032 :rope tension kg*m/sec*sec, newtons :

---

#### Testcase 3

table 3printed in tcl format
quantity value comment, if any
3:testcase_number
200.0 :mass kilograms:
70.0 :pulley height meters:
50.0 :horizontal distance meters:
4 :error flag logic 0, 1, 2, 3, 4 :
null flag1 :warning flag on entry :
null flag2 :warning flag on est. load :
null flag3 :warning flag on est. angle > 90 :
WARNING, horizontal distance inside danger zone :warning flag horizontal flag < 1.5X altitude :
105.0 :boundary working zone for involved personnel at 1.5X altitude, meters :
140.0 :boundary safety zone for non-involved and orange cones at 2X altitude, meters :
380.92 :check answer, force/g, approx. kg:
54.4 :angle1: degrees: angle1 is look angle, opposite altitude
35.5 :angle2: degrees: angle2 at pulley, opposite horizontal
3735.5 :rope tension kg*m/sec*sec, newtons :

#### Testcase 4, Example, all error flags activated with bad entries.

table 2printed in tcl format
quantity value comment, if any
2:testcase_number
500.0 :mass kilograms:
20.0 :pulley height meters:
5000.0 :horizontal distance meters: or try 15 meters
2 :error flag logic 0, 1, 2, 3, 4 :
WARNING, entry exceeds safe limit :warning flag on entry :
WARNING, est. load exceeds safe limit :warning flag on est. load :
WARNING, est. angle outside 0-90 range :warning flag on est. angle > 90 :
& WARNING, horizontal distance inside worker danger zone :warning flag horizontal flag < 1.5X altitude : & :warning flag horizontal flag < 1.5X altitude :
30.0 :boundary working zone for involved personnel at 1.5X altitude, meters :
40.0 :boundary safety zone for non-involved and orange cones at 2X altitude, meters :
WARNING!!!, load entry exceeds safe limit; reset to 0 :check answer, force/g, approx. kg:
0.229 :angle1: degrees: angle1 is look angle, opposite altitude
89.770 :angle2: degrees: angle2 at pulley, opposite horizontal
6948.203 :rope tension kg*m/sec*sec, newtons :

### References:

• Rounding in Tcl MG
• Vector Mechanics for Engineers, Statics and Dynamics, Beer and Johnston, fifth edition, discussion and problems in pages 25 to 45.
• Stage Rigging Handbook and Questions, post on internet website.
• Samson Rope Co. chart
• Opinion: The customary Safety Weight Load (SWL) ratio is
• 1:5 safety for industry, 1:10 for stage.
• Many countries, regions, and industries have different or
• updated standards for the SWL ratios and dimensions of the
• worker safety zones, so check your country, local authority,
• and company regulations for the current updates.

### Pseudocode & Equations Section

```        formulas
following includes algebraic expressions,
terms, and notation ```

## Appendix Code

### appendix TCL programs and scripts

```        # Simple Pulley Forces Tension
# pretty print from autoindent and ased editor
# Simple Pulley Forces Tension Calculator
# formulas under test, something wrong with forces.
# written on Windows XP on TCL
# working under TCL version 8.6
# gold  on   TCL Club , 5sep2018
# Still checking program with hand calculations.
# If warning error is fired, set check answer slot to zero
# to continue, clear,  or restart.
# Resetting check entry to zero, will allow user
# to continue lowering load until safe limit found.
package require Tk
package require math::numtheory
namespace path {::tcl::mathop ::tcl::mathfunc math::numtheory }
set tcl_precision 17
frame .frame -relief flat -bg aquamarine4
pack .frame -side top -fill y -anchor center
set names {{} { mass  kilograms:} }
lappend names { pulley height meters:}
lappend names { horizontal distance  meters: }
lappend names { answers: hypotenuse meters: }
lappend names { check answer, force/g, approx. kg:}
lappend names { angle1  degrees: }
lappend names { angle2  degrees:  }
lappend names { answers: rope tension kg*m/sec*sec, newtons  :}
foreach i {1 2 3 4 5 6 7 8} {
label .frame.label\$i -text [lindex \$names \$i] -anchor e
# old entry .frame.entry\$i -width 35 -textvariable side\$i
entry .frame.entry\$i -width 50 -textvariable side\$i
set msg "Simple Pulley Forces & Tension from TCL
by gold  on TCL Club , 5sep2018 "
tk_messageBox -title "About" -message \$msg }
proc help {} {
set msg "Calculator for Simple Pulley Forces & Tension
from TCL
# gold  on  TCL Club , 5sep2018
# Still checking program with hand calc.
# Calculations cover an angle from zero to
# 90 degrees on a simple pulley forces system
# with nylon rope. Enter 3 quantities
# as mass kg, altitude leg , horizontal leg.
# Metric force is m*a, m*g, mass * gravity.
# Metric force output is kg*m/sec*sec, newtons.
# Simple pulley on top of pole (crane) , house beam,
# or tree branch is at center of three forces
# in top of right triangle.
# angle1 is look angle between height (|)
# and horizontal (_) ,  opposite altitude leg.
# angle2 is at pulley, between height (|)
# and hypotenuse (\), is
# stress angle opposite horizontal.
# Sum of forces acting on pulley point derives as
# Rope tension force = sqrt ( 2*cos(angle2)*F**2 + 2*F**2).
# Angle2 range equals zero to ninety, 0-90 degs.
# Safe load limit on the 1/2 inch nylon rope is
# <expr 5000./5. > , 1000 pounds force,
# 454 kilograms (f/g)., or 4.45E3 newtons.
# Error check is force in kg*m/sec*sec
# over gravity (9.8) gives  >> approx. kgs.
# Warning flags are set separately in the
# program, so  single or multiple warning flags
# are possible.
# 3 Errors are entry > 454 kg, est. load > 454 kg,
# and estimated angle2 outside  0-90 degrees.
# If error is fired and locked,
# to continue either 1) clear, 2) restart.
# or 3) set check slot to zero
# Reseting check entry to zero, will allow user
# to continue lowering load until safe limit found.
# Report will include null flags, as p. development.
# For English pounds, enter pounds in kg slot
# and approximate tension in pounds should appear
# Check your country,  local authority, and
# company regs for the current updates on safety
# weight load ratios for rope standards
# and defined worker safety zones.
# Pushbutton Operation below.
# For the push buttons, the recommended procedure
# is push a testcase and fill frame,
# change first three entries etc,
# push solve, and then push report.
# Report allows copy and paste from console.
# For testcases in a computer session, the TCL calculator
# increments a new testcase number internally, eg. TC(1), TC(2)
# The testcase number is internal to the calculator
# and will not be printed until the report button is
# pushed for the current result numbers. The current
# result numbers will be cleared on the next solve button. "
tk_messageBox -title "About" -message \$msg }
#pi  invoked as < pi >
proc pi {} { return  [ expr { acos(-1) } ]}
proc radianstodegconst {} {return [ expr {180./[pi]}  ]}
proc degtoradiansconst {} {return [ expr {[pi]/180.}  ]}
proc stress_angle_rope_tension {  angle_stress  force_rope  gravity} {
set aa \$angle_stress
set cc  [expr {   \$aa * [ degtoradiansconst ] }]
set ff \$force_rope
# early test formulas commented out
#used for pounds
#set rope_tension_force [expr { 2.*\$ff*\$ff*cos(\$cc) + 2.*\$ff* \$ff } ]
#used for kilograms
#set rope_tension_force [expr { 2.*\$ff *\$ff*cos(\$cc) + 2.* \$ff* \$ff } ]
#set rope_tension_force [expr { 2.* \$gravity*\$gravity*\$ff*\$ff*cos(\$cc)*cos(\$cc) + 2.*\$gravity*\$gravity*\$ff*\$ff } ]
# slip in formula on lbs or kilograms choice.
set rope_tension_force [expr { 2.* \$gravity*\$gravity*\$ff*\$ff*cos(\$cc) + 2.*\$gravity*\$gravity*\$ff*\$ff } ]
set rope_tension_force [expr { sqrt(\$rope_tension_force)    }]
#set rope_tension_force  [expr { \$rope_tension_force/\$gravity    }]
return  \$rope_tension_force }
# mass of fifty pounds is hoisted through a single simple pulley.
# included angle of rope is 50 degrees. mass is 1000. pounds conv.
# One kilogram equals  2.204623 pounds.
# angle range equals zero to ninety, 0-90.
# but textbook table gives 1810.,
proc angle_outxxx  { altitude horizontal}  {
set tan_angle [/ \$altitude \$horizontal  ]
set tan_angle [* [ expr {  atan(\$tan_angle)* [ radianstodegconst]  } ]  ]
#puts " testing  \$altitude \$horizontal  [ expr atan(\$tan_angle)] [ radianstodegconst] \$tan_angle "
return \$tan_angle
}
# precision proc not always used here
# rounding answer to precision  xxx
proc precisionxxx {precision float}  {
#  tcl:Floating-point formatting, [AM]
#set x [ expr {round( 10 ** \$precision * \$float) / (10.0 ** \$precision)} ]
#  rounded or clipped to nearest 5ird significant figure
set x [ format "%#.5g" \$float ]
return \$x
}
# recognise math hypot alternate for 2 vectors,
# but proc here handles 3D and multiple vectors.
proc sqrt_sum_squares2 { args } {
set sum 0
foreach item  \$args  {
set sum  [ expr { \$sum + \$item * \$item } ]
}
return [ expr { sqrt(\$sum) }   ]}
proc calculate {     } {
global side1 side2 side3 side4 side5
global side6 side7 side8
global mass altitude horizontal
global warning_flag1 warning_flag2 error_report
global warning_flag3 warning_flag4
global testcase_number
incr testcase_number
set side1 [* \$side1 1. ]
set side2 [* \$side2 1. ]
set side3 [* \$side3 1. ]
set side4 [* \$side4 1. ]
# text flags as number type locking program,
# possible fix as comment out
# set side5 [* \$side5 1. ]
set side6 [* \$side6 1. ]
set side7 [* \$side7 1. ]
set side8 [* \$side8 1. ]
set mass \$side1
set altitude \$side2
set horizontal \$side3
set warning_flag1 " null flag1 "
set warning_flag2 " null flag2 "
set warning_flag3 " null flag3 "
set warning_flag4 " null flag4 "
set error_report 0
set hypotenuse [ sqrt_sum_squares2 \$altitude \$horizontal ]
set angle1 [ angle_outxxx  \$altitude \$horizontal ]
set angle2 [ angle_outxxx  \$horizontal \$altitude ]
# test values initialzed
set mass 100.
set mass \$side1
set angle_stress 50.
set angle_stress \$angle2
# set gravity for metric 9.80665 meters/sec*sec
# or gravity for  32.1740 feet /sec*sec
set gravity 9.80665
set stress_rope_tension2 [ stress_angle_rope_tension  \$angle2 \$mass \$gravity]
set check_force_g [/ \$stress_rope_tension2 \$gravity ]
# catastrophic load warnings are given priority
# and overide other screen warnings.
if { \$horizontal < [* 1.5 \$altitude ] } {
set warning_flag4 " WARNING, horizontal distance inside danger zone ";
set error_report 4 ;
set side5 " WARNING!!!, horizontal distance inside danger zone  "
}
if {  \$angle_stress < 0.00 || \$angle_stress > 89.0 } {
set warning_flag3 " WARNING, est. angle outside 0-90 range"}
if { \$side1 > 454.   } {
set warning_flag1 " WARNING, entry exceeds safe limit"}
if { \$side1 > 454.   } { set error_report 1}
if { \$check_force_g > 454.   } {
set warning_flag2 " WARNING, est. load exceeds safe limit"}
if { \$check_force_g > 454.   } { set error_report 1}
if { \$check_force_g > 454. || \$side1 > 454.   } { set error_report 2 }
set side4 \$hypotenuse
# set side5 \$check_force_g
# rounding to precision 5
set side5 [ precisionxxx 5 \$check_force_g ]
if {\$angle_stress < 0.00 || \$angle_stress > 89.999 } {
set side5 " WARNING!!!, est. angle outside 0-90 deg range; reset to 0 " }
if { \$side1 > 454.   } { set side5 " WARNING!!!, load entry exceeds safe limit; reset to 0 " }
if { \$check_force_g > 454.   } { if { \$horizontal < [* 1.5 \$altitude ] } {
set warning_flag4 " WARNING, horizontal distance inside worker danger zone "}  }
set side6 \$angle1
set side7 \$angle2
set side8 \$stress_rope_tension2
}
proc fillup {aa bb cc dd ee ff gg hh} {
.frame.entry1 insert 0 "\$aa"
.frame.entry2 insert 0 "\$bb"
.frame.entry3 insert 0 "\$cc"
.frame.entry4 insert 0 "\$dd"
.frame.entry5 insert 0 "\$ee"
.frame.entry6 insert 0 "\$ff"
.frame.entry7 insert 0 "\$gg"
.frame.entry8 insert 0 "\$hh"
}
proc clearx {} {
foreach i {1 2 3 4 5 6 7 8 } {
.frame.entry\$i delete 0 end } }
proc reportx {} {
global side1 side2 side3 side4 side5
global side6 side7 side8
global testcase_number
global mass altitude horizontal
global warning_flag1 warning_flag2 error_report
global warning_flag3 warning_flag4
console eval {.console config -bg palegreen}
console eval {.console config -font {fixed 20 bold}}
console eval {wm geometry . 40x20}
console eval {wm title . " Simple Pulley Forces & Tension Report , screen grab and paste from console 2 to texteditor"}
console eval {. configure -background orange -highlightcolor brown -relief raised -border 30}
console show;
puts "%|table \$testcase_number|printed in| tcl format|% "
puts "&| quantity| value| comment, if any|& "
puts "&| \$testcase_number:|testcase_number | |& "
puts "&| \$side1 :|mass kilograms:  |   |&"
puts "&| \$side2 :|pulley height meters: | |& "
puts "&| \$side3 :|horizontal distance meters: | |& "
puts "&| \$side4 :|answers, hypotenuse meters: | |&"
puts "&| \$error_report :|error flag logic 0, 1, 2, 3, 4 : | |&"
puts "&| \$warning_flag1 :|warning flag on entry : | |&"
puts "&| \$warning_flag2 :|warning flag on est. load : | |&"
puts "&| \$warning_flag3 :|warning flag on est. angle > 90 : | |&"
puts "&| \$warning_flag4 :|warning flag horizontal flag < 1.5X altitude : | |&"
puts "&| [* 1.5 \$altitude ] :|boundary working zone for involved personnel at 1.5X altitude, meters : | |&"
puts "&| [* 2. \$altitude ] :|boundary safety zone for non-involved and orange cones at 2X altitude, meters : | |&"
puts "&| \$side5 :|check answer, force/g, approx. kg: | |&"
puts "&| \$side6 :|angle1: degrees: | angle1 is look angle,  opposite altitude  |&"
puts "&| \$side7 :|angle2: degrees: | angle2 at pulley, opposite horizontal |&"
puts "&| \$side8 :|rope tension kg*m/sec*sec, newtons  : |  |&"
}
frame .buttons -bg aquamarine4
::ttk::button .calculator -text "Solve" -command { calculate   }
::ttk::button .test2 -text "Testcase1" -command {clearx;fillup 50.  20.0  16.75  26.0  94.  50.02   40.0 921.}
::ttk::button .test3 -text "Testcase2" -command {clearx;fillup 100.   50.0  50.  70.7  185.  45.   45. 1812. }
::ttk::button .test4 -text "Testcase3" -command {clearx;fillup 200.  70.0  50.  86.02  381.  54.46   35.53  3735. }
::ttk::button .clearallx -text clear -command {clearx }
::ttk::button .help2 -text help -command {help}
::ttk::button .cons -text report -command { reportx }
::ttk::button .exit -text exit -command {exit}
pack  .clearallx .help2 .cons .about .exit .test4 .test3 .test2   -side bottom -in .buttons
grid .frame .buttons -sticky ns -pady {0 10}
. configure -background aquamarine4 -highlightcolor brown -relief raised -border 30
wm title . "Simple Pulley Forces & Tension Calculator"
# This code is copyrighted same as TCL version 8.6