In [1]:
import math
def varData_speedCalc(cups_speed, printing_speed, substrate_size, turn_speed, ethernet_speed, printhead_nbr, printhead_dpi, cb):
"""
varData_speedCalc, calculated the theoretical speed of a machine with the given settings
:param cups_speed: mechanical max of [cups/min]
:param printing_speed: max printing speed of Calmar system [mm/s]
:param substrate_size: 2-dim array [w,h] of the subrate size in [mm]
:param turn_speed: time for loading new cup (in digiround turn mechanism) in [seconds]
:param ethernet_speed: data sending speed over ethernet in [Gbps]
:param printhead_nbr: number of printheads on the machine [pcs]
:param printhead_dpi: dpi of a printhead [dpi]
:param cb: number of controllerboards in the machine
"""
inch2mm = 25.4 # mm/inch
bpp = 4.0 # bit/px
# cup speed
cup_speed_sec = cups_speed / 60 # cup/sec
cup_cycle = 1/cup_speed_sec # sec
# print speed
print_time = substrate_size[0] / printing_speed # sec
print_cycle = turn_speed + print_time # sec
# image size
pixel_pitch = inch2mm / printhead_dpi # mm
image_size_px = [int(math.ceil(substrate_size[0]/pixel_pitch)), int(math.ceil(substrate_size[1]/pixel_pitch))]
# data size per image
image_size_bytes = (image_size_px[0]*image_size_px[1])*bpp/8 # bytes
# transfer time on ethernet
image_transfer_time = (image_size_bytes*8) / (ethernet_speed*10e9)
# transfer time all boards
all_image_transfer_time = image_transfer_time * printhead_nbr
# Print all results
print("cup_speed_sec = {:.3f} cup/sec".format(cup_speed_sec))
print("cup_cycle = {:.3f} ms (Mechanic Maximum)".format(cup_cycle*1000))
print("print_time = {:.3f} ms".format(print_time*1000))
print("print_cycle = {:.3f} ms".format(print_cycle*1000))
print("image_size_px (x : y) = ( {}px : {}px )".format(image_size_px[0], image_size_px[1]))
print("image_size_bytes = {:.3f} MB".format(image_size_bytes/1024/1024))
print("image_transfer_time = {:.3f} ms".format(image_transfer_time*1000))
print("all_image_transfer_time = {:.3f} ms".format(all_image_transfer_time*1000))
In [2]:
# Max values
cups_speed = 250.0 # cups/min
printing_speed = 850.0 # mm/s
substrate_size = [408.407, 140.0] # mm [w, h] 130mm diameter
turn_speed = 0.1 # sec
ethernet_speed = 1.0 # Gbps
printhead_nbr = 10.0 # pcs
printhead_dpi = 360.0 # dpi
cb = 5.0 # pcs
varData_speedCalc(cups_speed, printing_speed, substrate_size, turn_speed, ethernet_speed, printhead_nbr, printhead_dpi, cb)
In [3]:
cups_speed = 250.0 # cups/min
printing_speed = 850.0 # mm/s
substrate_size = [280.0, 140.0] # mm [w, h]
turn_speed = 0.1 # sec
ethernet_speed = 1.0 # Gbps
printhead_nbr = 10.0 # pcs
printhead_dpi = 360.0 # dpi
cb = 5.0 # pcs
varData_speedCalc(cups_speed, printing_speed, substrate_size, turn_speed, ethernet_speed, printhead_nbr, printhead_dpi, cb)