cml04-l2-rsm-out/internal/types/uf.go

182 lines
11 KiB
Go
Raw Normal View History

2024-08-20 10:07:14 +02:00
package types
import (
"bytes"
"encoding/binary"
"unsafe"
"git.espin.casa/albert/cml04-gdm-int/pkg/api"
)
type L2Uf struct {
TelegramHeader *TelegramHeader
UfRollSetId [20]byte /* roll set identification */
UfRollSetType int32 /* roll set type, 1=DUO,2=UNI */
UfTonnageAccum [10]float32 /* tonnage accumulated per groove */
UfChangeSleeveLength float32 /* length of the roll changing ca */
UfChangeSleeveDepth float32 /* depth of the roll changing car */
UfHrChangedFlag int32 /* changed flag horizontal roll, */
UfVrChangedFlag int32 /* changed flag vertical roll, 0= */
UfRollMaterialH [20]byte /* roll material horizontal rolls */
UfRollMaterialV [20]byte /* roll material vertical rolls */
UfHNomGap float32 /* nominal gap (from roll drawing */
UfRollDiamActHbo float32 /* actual nominal diameter bottom */
UfRollDiamActHtp float32 /* actual nominal diameter top ro */
UfRollBarrelWidthHbo float32 /* barrel width bottom roll */
UfRollBarrelWidthHtp float32 /* barrel width top roll */
UfRollChamWidthHbo float32 /* chamber width bottom roll */
UfRollChamWidthHtp float32 /* chamber width top roll */
UfRollAngleHbo float32 /* angle roll flange face bottom */
UfRollAngleHtb float32 /* angle roll flange face top rol */
UfRollDiamActVds float32 /* actual nominal vertical roll d */
UfRollDiamActVos float32 /* actual nominal vertical roll d */
UfRollAngleVds float32 /* roll angle flange face (vertic */
UfRollAngleVos float32 /* roll angle flange face (vertic */
UfActualShimpsHbo float32 /* thickness shimplate hor. botto */
UfActualShimpsHtp float32 /* thickness shimplate hor. top r */
UfActualShimpsVDS1 float32 /* thickness shimplate 1 drive si */
UfActualShimpsVDS2 float32 /* thickness shimplate 2 drive si */
UfActualShimpsVOS1 float32 /* thickness shimplate 1 oper. Si */
UfActualShimpsVOS2 float32 /* thickness shimplate 2 oper. Si */
UfPasslineOffset float32 /* passline offset */
UfPinVChock float32 /* pin between horizontal and ver */
UfDummyVal1 float32 /* Placeholder for Extensions */
UfDummyVal2 float32 /* Placeholder for Extensions */
UfDummyVal3 float32 /* Placeholder for Extensions */
UfDummyVal4 float32 /* Placeholder for Extensions */
UfDRollMaterial [20]byte /* roll material type (H = Hard, */
UfDRollDiamNomActTop float32 /* actual nominal diameter of top */
UfDRollDiamNomActBot float32 /* actual nominal diameter of bot */
UfDRollNominalGap float32 /* nominal roll gap */
UfDRollGrooves int32 /* number of grooves (equal for t */
UfDRollGrooveWidth [10]float32 /* groove width of each groove (e */
UfDRollGrooveStiffnessTop [10]float32 /* stiffness of each groove (top */
UfDRollGrooveStiffnessBot [10]float32 /* stiffness of each groove (bott */
UfDRollGroovePos [10]float32 /* groove position, the position */
UfDRollGrooveSharp [10]int32 /* groove sharpened, 1= no, 2=yes */
UfDRollActualShimpsTop float32 /* thickness chock shim top roll */
UfDRollActualShimpsBot float32 /* thickness chock shim bottom ro */
UfDRollThrustPlate float32 /* thickness of thrust plate betw */
}
func (uf *L2Uf) FillTelegram(rolldata *api.UfRollData) {
size := unsafe.Sizeof(uf)
uf.TelegramHeader = &TelegramHeader{
MessageLength: int16(size),
TelegramID: 9001,
SequenceCounter: 0,
Flags: 0,
TimeStamp: [8]int16{},
}
copy(uf.UfRollSetId[:], []byte(rolldata.GetUfRollSetId()))
uf.UfRollSetType = int32(rolldata.GetUfRollSetType())
uf.UfTonnageAccum[0] = float32(rolldata.GetUfTonnageAccum0())
uf.UfTonnageAccum[1] = float32(rolldata.GetUfTonnageAccum1())
uf.UfTonnageAccum[2] = float32(rolldata.GetUfTonnageAccum2())
uf.UfTonnageAccum[3] = float32(rolldata.GetUfTonnageAccum3())
uf.UfTonnageAccum[4] = float32(rolldata.GetUfTonnageAccum4())
uf.UfTonnageAccum[5] = float32(rolldata.GetUfTonnageAccum5())
uf.UfTonnageAccum[6] = float32(rolldata.GetUfTonnageAccum6())
uf.UfTonnageAccum[7] = float32(rolldata.GetUfTonnageAccum7())
uf.UfTonnageAccum[8] = float32(rolldata.GetUfTonnageAccum8())
uf.UfTonnageAccum[9] = float32(rolldata.GetUfTonnageAccum9())
uf.UfChangeSleeveLength = float32(rolldata.GetUfChangeSleeveLength())
uf.UfChangeSleeveDepth = float32(rolldata.GetUfChangeSleeveLength())
uf.UfHrChangedFlag = 0 // ????????????????????????????????????????????
uf.UfVrChangedFlag = 0 // ????????????????????????????????????????????
copy(uf.UfRollMaterialH[:], []byte(rolldata.GetUfRollMaterialH()))
copy(uf.UfRollMaterialV[:], []byte(rolldata.GetUfRollMaterialV()))
uf.UfHNomGap = float32(rolldata.GetUfHNomgap())
uf.UfRollDiamActHbo = float32(rolldata.GetUfRollDiamActHbo())
uf.UfRollDiamActHtp = float32(rolldata.GetUfRollDiamActHtp())
uf.UfRollBarrelWidthHbo = float32(rolldata.GetUfRollBarrelWidthHbo())
uf.UfRollBarrelWidthHtp = float32(rolldata.GetUfRollBarrelWidthHtp())
uf.UfRollChamWidthHbo = float32(rolldata.GetUfRollChamWidthHbo())
uf.UfRollChamWidthHtp = float32(rolldata.GetUfRollChamWidthHtp())
uf.UfRollAngleHbo = float32(rolldata.GetUfRollAngleHbo())
uf.UfRollAngleHtb = float32(rolldata.GetUfRollAngleHtb())
uf.UfRollDiamActVds = float32(rolldata.GetUfRollDiamActVds())
uf.UfRollDiamActVos = float32(rolldata.GetUfRollDiamActVos())
uf.UfRollAngleVds = float32(rolldata.GetUfRollAngleVds())
uf.UfRollAngleVos = float32(rolldata.GetUfRollAngleVos())
uf.UfActualShimpsHbo = float32(rolldata.GetUfActualShimpsHbo())
uf.UfActualShimpsHtp = float32(rolldata.GetUfActualShimpsHtp())
uf.UfActualShimpsVDS1 = float32(rolldata.GetUfActualShimpsVds_1())
uf.UfActualShimpsVDS2 = float32(rolldata.GetUfActualShimpsVds_2())
uf.UfActualShimpsVOS1 = float32(rolldata.GetUfActualShimpsVos_1())
uf.UfActualShimpsVOS2 = float32(rolldata.GetUfActualShimpsVos_2())
uf.UfPasslineOffset = float32(rolldata.GetUfPasslineOffset())
uf.UfPinVChock = float32(rolldata.GetUfPinVChock())
uf.UfDummyVal1 = 0
uf.UfDummyVal2 = 0
uf.UfDummyVal3 = 0
uf.UfDummyVal4 = 0
copy(uf.UfDRollMaterial[:], []byte(rolldata.GetUfRollMaterialH())) // ????????????????????
uf.UfDRollDiamNomActTop = float32(rolldata.GetUfRollDiamActHtp())
uf.UfDRollDiamNomActBot = float32(rolldata.GetUfRollDiamActHbo())
uf.UfDRollNominalGap = float32(rolldata.GetUfHNomgap())
uf.UfDRollGrooves = int32(rolldata.GetUfRollGrooves())
uf.UfDRollGrooveWidth[0] = float32(rolldata.GetUfRollGrooveWidth0())
uf.UfDRollGrooveWidth[1] = float32(rolldata.GetUfRollGrooveWidth1())
uf.UfDRollGrooveWidth[2] = float32(rolldata.GetUfRollGrooveWidth2())
uf.UfDRollGrooveWidth[3] = float32(rolldata.GetUfRollGrooveWidth3())
uf.UfDRollGrooveWidth[4] = float32(rolldata.GetUfRollGrooveWidth4())
uf.UfDRollGrooveWidth[5] = float32(rolldata.GetUfRollGrooveWidth5())
uf.UfDRollGrooveWidth[6] = float32(rolldata.GetUfRollGrooveWidth6())
uf.UfDRollGrooveWidth[7] = float32(rolldata.GetUfRollGrooveWidth7())
uf.UfDRollGrooveWidth[8] = float32(rolldata.GetUfRollGrooveWidth8())
uf.UfDRollGrooveWidth[9] = float32(rolldata.GetUfRollGrooveWidth9())
uf.UfDRollGrooveStiffnessTop[0] = float32(rolldata.GetUfRollGrooveStiffnessTop0())
uf.UfDRollGrooveStiffnessTop[1] = float32(rolldata.GetUfRollGrooveStiffnessTop1())
uf.UfDRollGrooveStiffnessTop[2] = float32(rolldata.GetUfRollGrooveStiffnessTop2())
uf.UfDRollGrooveStiffnessTop[3] = float32(rolldata.GetUfRollGrooveStiffnessTop3())
uf.UfDRollGrooveStiffnessTop[4] = float32(rolldata.GetUfRollGrooveStiffnessTop4())
uf.UfDRollGrooveStiffnessTop[5] = float32(rolldata.GetUfRollGrooveStiffnessTop5())
uf.UfDRollGrooveStiffnessTop[6] = float32(rolldata.GetUfRollGrooveStiffnessTop6())
uf.UfDRollGrooveStiffnessTop[7] = float32(rolldata.GetUfRollGrooveStiffnessTop7())
uf.UfDRollGrooveStiffnessTop[8] = float32(rolldata.GetUfRollGrooveStiffnessTop8())
uf.UfDRollGrooveStiffnessTop[9] = float32(rolldata.GetUfRollGrooveStiffnessTop9())
uf.UfDRollGrooveStiffnessBot[0] = float32(rolldata.GetUfRollGrooveStiffnessBot0())
uf.UfDRollGrooveStiffnessBot[1] = float32(rolldata.GetUfRollGrooveStiffnessBot1())
uf.UfDRollGrooveStiffnessBot[2] = float32(rolldata.GetUfRollGrooveStiffnessBot2())
uf.UfDRollGrooveStiffnessBot[3] = float32(rolldata.GetUfRollGrooveStiffnessBot3())
uf.UfDRollGrooveStiffnessBot[4] = float32(rolldata.GetUfRollGrooveStiffnessBot4())
uf.UfDRollGrooveStiffnessBot[5] = float32(rolldata.GetUfRollGrooveStiffnessBot5())
uf.UfDRollGrooveStiffnessBot[6] = float32(rolldata.GetUfRollGrooveStiffnessBot6())
uf.UfDRollGrooveStiffnessBot[7] = float32(rolldata.GetUfRollGrooveStiffnessBot7())
uf.UfDRollGrooveStiffnessBot[8] = float32(rolldata.GetUfRollGrooveStiffnessBot8())
uf.UfDRollGrooveStiffnessBot[9] = float32(rolldata.GetUfRollGrooveStiffnessBot9())
uf.UfDRollGroovePos[0] = float32(rolldata.GetUfRollGroovePos0())
uf.UfDRollGroovePos[1] = float32(rolldata.GetUfRollGroovePos1())
uf.UfDRollGroovePos[2] = float32(rolldata.GetUfRollGroovePos2())
uf.UfDRollGroovePos[3] = float32(rolldata.GetUfRollGroovePos3())
uf.UfDRollGroovePos[4] = float32(rolldata.GetUfRollGroovePos4())
uf.UfDRollGroovePos[5] = float32(rolldata.GetUfRollGroovePos5())
uf.UfDRollGroovePos[6] = float32(rolldata.GetUfRollGroovePos6())
uf.UfDRollGroovePos[7] = float32(rolldata.GetUfRollGroovePos7())
uf.UfDRollGroovePos[8] = float32(rolldata.GetUfRollGroovePos8())
uf.UfDRollGroovePos[9] = float32(rolldata.GetUfRollGroovePos9())
uf.UfDRollGrooveSharp[0] = int32(rolldata.GetUfRollGrooveSharp0())
uf.UfDRollGrooveSharp[1] = int32(rolldata.GetUfRollGrooveSharp1())
uf.UfDRollGrooveSharp[2] = int32(rolldata.GetUfRollGrooveSharp2())
uf.UfDRollGrooveSharp[3] = int32(rolldata.GetUfRollGrooveSharp3())
uf.UfDRollGrooveSharp[4] = int32(rolldata.GetUfRollGrooveSharp4())
uf.UfDRollGrooveSharp[5] = int32(rolldata.GetUfRollGrooveSharp5())
uf.UfDRollGrooveSharp[6] = int32(rolldata.GetUfRollGrooveSharp6())
uf.UfDRollGrooveSharp[7] = int32(rolldata.GetUfRollGrooveSharp7())
uf.UfDRollGrooveSharp[8] = int32(rolldata.GetUfRollGrooveSharp8())
uf.UfDRollGrooveSharp[9] = int32(rolldata.GetUfRollGrooveSharp9())
uf.UfDRollActualShimpsTop = float32(rolldata.GetUfActualShimpsHtp())
uf.UfDRollActualShimpsBot = float32(rolldata.GetUfActualShimpsHbo())
uf.UfDRollThrustPlate = float32(rolldata.GetUfRollThrustPlate())
}
func (uf *L2Uf) ToBytes() ([]byte, error) {
bs := make([]byte, unsafe.Sizeof(uf))
buffer := bytes.NewBuffer(bs)
if err := binary.Write(buffer, binary.LittleEndian, uf); err != nil {
return nil, err
}
return buffer.Bytes(), nil
}