Kudos @JordanCClark
Thank you.
Just a little correction (for mode and DataType):
import csv
OPCServer='Ignition OPC-UA Server'
deviceName='[testrampe]' #what name you have in Ignition/Config/Devices website
alarmFolderName=u"testrampe/Alarms" #In which folder in Tag Browser in the designer you want to put your alarms
scanClass='Default' #which scanclass should your alarms tags run under
priority=2 #priority of the alarm:0-Diagnostic, 1-Low, 2-Medium, 3-High, 4-Critical
pathIn=system.file.openFile('csv')
#pathIn = 'c:/test/testFileIn.txt'
fileIn = open(pathIn, 'rb')
reader=csv.reader(fileIn, delimiter = ';')
dictIn = {}
# Read File into dictionary
for row in reader:
# Split address into byte/bit
address = row[0].split('.')
address[0] = address[0].replace("M","MB")
if address[0] not in dictIn.keys():
dictIn[address[0]] = {}
dictIn[address[0]][address[1]] = row[1]
# Create tags
for byte in (dictIn.keys()):
alarmDict = {}
# Create alarm dictionary for each tag
for bit in sorted(dictIn[byte].keys()):
alarmtext = dictIn[byte][bit]
alarmDict[alarmtext] = [["name", "Value", alarmtext],
["priority","Value", priority],
["label", "Value", alarmtext],
["mode","Value", 9],
["bitPosition","Value", int(bit)],
["ackMode", "Value", 1]]
system.tag.addTag(parentPath=alarmFolderName,
name=byte,
tagType = "OPC",
attributes={"OPCServer" : OPCServer,
"DataType" : 0,
"OPCItemPath" : deviceName+byte,
"ScanClass" : scanClass},
alarmConfig = alarmDict
)
and it’s working perfectly.
Again,