Hi ,I have rewrite the excel file to create a memory dataset type tag in ignition, but I could not create a new dataset , could you please help to check which is wrong and how to fix it, Thanks
import math
from org.apache.commons.math3.analysis.function import Log, Log10
def finaloutput():
#print("Starting Calculation")
input= system.tag.read("[default]input").value
pipeline_inputs = system.tag.read("[default]pipeline_inputs").value
output1 = system.tag.read("[default]output1").value
pyds1 =system.dataset.toPyDataSet(output1)
pyds2 =system.dataset.toPyDataSet(input)
pyds3 =system.dataset.toPyDataSet(pipeline_inputs)
OD = pyds3[0][1]
WT = pyds3[1][1]
C= pyds3[3][1]
m= pyds3[4][1]
Load_Array=[]
for column in pyds2:
value=column[1]
Load_Array.append(value)
#34685
number_of_loads = output1.getRowCount()
#U column
urange=[]
for column in pyds1:
Range=column[1]
urange.append(Range)
#print urange
#W column
wcycles=[]
for column in pyds1:
Cycles=column[3]
wcycles.append(Cycles)
#print wcycles
pressure_range=[]
for i in range(0,1210,10):
pressure_range.append(i)
#sum of cycles
Sum_w=[0]*120
for i in range(0,120):
for j in range(0,number_of_loads):
if 10*i<urange[j]<=10*(i+1):
Sum_w[i]=Sum_w[i]+wcycles[j]
Sum_w.insert(0,0)
stressrange=[]
j=0
for j in range(len(pressure_range)):
stressvalue=(pressure_range[j])*OD/(2*WT)
j+=1
stressrange.append(int(round(stressvalue)))
# x=1
# N=[]
# x10=Log10()
# for x in range(1,len(stressrange)):
# logval=stressrange[x]/1000
# Cycles=x10.value(logval)
# nvalue=math.pow(10,C-m*Cycles)
# N.append(nvalue)
# print N
N=[]
x=1
for x in range(1,len(stressrange)):
logval=math.log(stressrange[x],10)-3
nvalue=math.pow(10,C-m*logval)
x+=1
N.append(nvalue)
N.insert(0,0)
D=[]
i=1
for i in range(1,len(pressure_range)):
damge=Sum_w[i]/N[i]
i+=1
D.append(damge)
D.insert(0,0)
CumD=[]
Sum=0
for i in range(1,len(D)):
Sum=Sum+D[i]
CumD.append(Sum)
CumD.insert(0,0)
print CumD
cumulative_damage=CumD[-1]
str_level=13000
SMYS=pyds3[2][1]
SSI=cumulative_damage*math.pow(10,C-m*(math.log(str_level,10)-m))
SSI_stresspercent=str_level/SMYS*100
remaining_life=1/(cumulative_damage/(max(Load_Array)/(356*1440)))
pro_of_failure=1-math.pow(math.e,(-1)*math.pow(5*cumulative_damage,2.5))
print SSI
print SSI_stresspercent
print remaining_life
print pro_of_failure
print cumulative_damage
headers=["SSI","SSI%","remaining_life","stresslevel","pro_of_failure","cumulativedamge"]
data=[]
data.append([SSI,SSI_stresspercent,remaining_life,str_level,pro_of_failure,cumulative_damage])
system.tag.writeBlocking("[default]pressure",system.dataset.toDataset(headers,data),pressure)
# pressurecycles=[]
# i=0
# for i in range(0,len(pressure_range)):
# pressurecycles.append([pressure_range[i],Sum_w[i],stressrange[i],N[i],D[i],CumD[i]])
# system.tag.writeBlocking("[default]pressurecycles",system.dataset.toDataSet(['P','n','stressrange','N','D','CumD'],pressurecycles))