cml04-l2-rsm-out/internal/types/ur.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 L2Ur struct {
TelegramHeader *TelegramHeader
UrRollSetId [20]byte /* roll set identification */
UrRollSetType int32 /* roll set type, 1=DUO,2=UNI */
UrTonnageAccum [10]float32 /* tonnage accumulated per groove */
UrChangeSleeveLength float32 /* length of the roll changing ca */
UrChangeSleeveDepth float32 /* depth of the roll changing car */
UrHrChangedFlag int32 /* changed flag horizontal roll, */
UrVrChangedFlag int32 /* changed flag vertical roll, 0= */
UrRollMaterialH [20]byte /* roll material horizontal rolls */
UrRollMaterialV [20]byte /* roll material vertical rolls */
UrHNomGap float32 /* nominal gap (from roll drawing */
UrRollDiamActHbo float32 /* actual nominal diameter bottom */
UrRollDiamActHtp float32 /* actual nominal diameter top ro */
UrRollBarrelWidthHbo float32 /* barrel width bottom roll */
UrRollBarrelWidthHtp float32 /* barrel width top roll */
UrRollChamWidthHbo float32 /* chamber width bottom roll */
UrRollChamWidthHtp float32 /* chamber width top roll */
UrRollAngleHbo float32 /* angle roll flange face bottom */
UrRollAngleHtb float32 /* angle roll flange face top rol */
UrRollDiamActVds float32 /* actual nominal vertical roll d */
UrRollDiamActVos float32 /* actual nominal vertical roll d */
UrRollAngleVds float32 /* roll angle flange face (vertic */
UrRollAngleVos float32 /* roll angle flange face (vertic */
UrActualShimpsHbo float32 /* thickness shimplate hor. botto */
UrActualShimpsHtp float32 /* thickness shimplate hor. top r */
UrActualShimpsVDS1 float32 /* thickness shimplate 1 drive si */
UrActualShimpsVDS2 float32 /* thickness shimplate 2 drive si */
UrActualShimpsVOS1 float32 /* thickness shimplate 1 oper. Si */
UrActualShimpsVOS2 float32 /* thickness shimplate 2 oper. Si */
UrPasslineOffset float32 /* passline offset */
UrPinVChock float32 /* pin between horizontal and ver */
UrDummyVal1 float32 /* Placeholder for Extensions */
UrDummyVal2 float32 /* Placeholder for Extensions */
UrDummyVal3 float32 /* Placeholder for Extensions */
UrDummyVal4 float32 /* Placeholder for Extensions */
UrDRollMaterial [20]byte /* roll material type (H = Hard, */
UrDRollDiamNomActTop float32 /* actual nominal diameter of top */
UrDRollDiamNomActBot float32 /* actual nominal diameter of bot */
UrDRollNominalGap float32 /* nominal roll gap */
UrDRollGrooves int32 /* number of grooves (equal for t */
UrDRollGrooveWidth [10]float32 /* groove width of each groove (e */
UrDRollGrooveStiffnessTop [10]float32 /* stiffness of each groove (top */
UrDRollGrooveStiffnessBot [10]float32 /* stiffness of each groove (bott */
UrDRollGroovePos [10]float32 /* groove position, the position */
UrDRollGrooveSharp [10]int32 /* groove sharpened, 1= no, 2=yes */
UrDRollActualShimpsTop float32 /* thickness chock shim top roll */
UrDRollActualShimpsBot float32 /* thickness chock shim bottom ro */
UrDRollThrustPlate float32 /* thickness of thrust plate betw */
}
func (ur *L2Ur) FillTelegram(rolldata *api.UrRollData) {
size := unsafe.Sizeof(ur)
ur.TelegramHeader = &TelegramHeader{
MessageLength: int16(size),
TelegramID: 9001,
SequenceCounter: 0,
Flags: 0,
TimeStamp: [8]int16{},
}
copy(ur.UrRollSetId[:], []byte(rolldata.GetUrRollSetId()))
ur.UrRollSetType = int32(rolldata.GetUrRollSetType())
ur.UrTonnageAccum[0] = float32(rolldata.GetUrTonnageAccum0())
ur.UrTonnageAccum[1] = float32(rolldata.GetUrTonnageAccum1())
ur.UrTonnageAccum[2] = float32(rolldata.GetUrTonnageAccum2())
ur.UrTonnageAccum[3] = float32(rolldata.GetUrTonnageAccum3())
ur.UrTonnageAccum[4] = float32(rolldata.GetUrTonnageAccum4())
ur.UrTonnageAccum[5] = float32(rolldata.GetUrTonnageAccum5())
ur.UrTonnageAccum[6] = float32(rolldata.GetUrTonnageAccum6())
ur.UrTonnageAccum[7] = float32(rolldata.GetUrTonnageAccum7())
ur.UrTonnageAccum[8] = float32(rolldata.GetUrTonnageAccum8())
ur.UrTonnageAccum[9] = float32(rolldata.GetUrTonnageAccum9())
ur.UrChangeSleeveLength = float32(rolldata.GetUrChangeSleeveLength())
ur.UrChangeSleeveDepth = float32(rolldata.GetUrChangeSleeveLength())
ur.UrHrChangedFlag = 0 // ????????????????????????????????????????????
ur.UrVrChangedFlag = 0 // ????????????????????????????????????????????
copy(ur.UrRollMaterialH[:], []byte(rolldata.GetUrRollMaterialH()))
copy(ur.UrRollMaterialV[:], []byte(rolldata.GetUrRollMaterialV()))
ur.UrHNomGap = float32(rolldata.GetUrHNomgap())
ur.UrRollDiamActHbo = float32(rolldata.GetUrRollDiamActHbo())
ur.UrRollDiamActHtp = float32(rolldata.GetUrRollDiamActHtp())
ur.UrRollBarrelWidthHbo = float32(rolldata.GetUrRollBarrelWidthHbo())
ur.UrRollBarrelWidthHtp = float32(rolldata.GetUrRollBarrelWidthHtp())
ur.UrRollChamWidthHbo = float32(rolldata.GetUrRollChamWidthHbo())
ur.UrRollChamWidthHtp = float32(rolldata.GetUrRollChamWidthHtp())
ur.UrRollAngleHbo = float32(rolldata.GetUrRollAngleHbo())
ur.UrRollAngleHtb = float32(rolldata.GetUrRollAngleHtb())
ur.UrRollDiamActVds = float32(rolldata.GetUrRollDiamActVds())
ur.UrRollDiamActVos = float32(rolldata.GetUrRollDiamActVos())
ur.UrRollAngleVds = float32(rolldata.GetUrRollAngleVds())
ur.UrRollAngleVos = float32(rolldata.GetUrRollAngleVos())
ur.UrActualShimpsHbo = float32(rolldata.GetUrActualShimpsHbo())
ur.UrActualShimpsHtp = float32(rolldata.GetUrActualShimpsHtp())
ur.UrActualShimpsVDS1 = float32(rolldata.GetUrActualShimpsVds_1())
ur.UrActualShimpsVDS2 = float32(rolldata.GetUrActualShimpsVds_2())
ur.UrActualShimpsVOS1 = float32(rolldata.GetUrActualShimpsVos_1())
ur.UrActualShimpsVOS2 = float32(rolldata.GetUrActualShimpsVos_2())
ur.UrPasslineOffset = float32(rolldata.GetUrPasslineOffset())
ur.UrPinVChock = float32(rolldata.GetUrPinVChock())
ur.UrDummyVal1 = 0
ur.UrDummyVal2 = 0
ur.UrDummyVal3 = 0
ur.UrDummyVal4 = 0
copy(ur.UrDRollMaterial[:], []byte(rolldata.GetUrRollMaterialH())) // ????????????????????
ur.UrDRollDiamNomActTop = float32(rolldata.GetUrRollDiamActHtp())
ur.UrDRollDiamNomActBot = float32(rolldata.GetUrRollDiamActHbo())
ur.UrDRollNominalGap = float32(rolldata.GetUrHNomgap())
ur.UrDRollGrooves = int32(rolldata.GetUrRollGrooves())
ur.UrDRollGrooveWidth[0] = float32(rolldata.GetUrRollGrooveWidth0())
ur.UrDRollGrooveWidth[1] = float32(rolldata.GetUrRollGrooveWidth1())
ur.UrDRollGrooveWidth[2] = float32(rolldata.GetUrRollGrooveWidth2())
ur.UrDRollGrooveWidth[3] = float32(rolldata.GetUrRollGrooveWidth3())
ur.UrDRollGrooveWidth[4] = float32(rolldata.GetUrRollGrooveWidth4())
ur.UrDRollGrooveWidth[5] = float32(rolldata.GetUrRollGrooveWidth5())
ur.UrDRollGrooveWidth[6] = float32(rolldata.GetUrRollGrooveWidth6())
ur.UrDRollGrooveWidth[7] = float32(rolldata.GetUrRollGrooveWidth7())
ur.UrDRollGrooveWidth[8] = float32(rolldata.GetUrRollGrooveWidth8())
ur.UrDRollGrooveWidth[9] = float32(rolldata.GetUrRollGrooveWidth9())
ur.UrDRollGrooveStiffnessTop[0] = float32(rolldata.GetUrRollGrooveStiffnessTop0())
ur.UrDRollGrooveStiffnessTop[1] = float32(rolldata.GetUrRollGrooveStiffnessTop1())
ur.UrDRollGrooveStiffnessTop[2] = float32(rolldata.GetUrRollGrooveStiffnessTop2())
ur.UrDRollGrooveStiffnessTop[3] = float32(rolldata.GetUrRollGrooveStiffnessTop3())
ur.UrDRollGrooveStiffnessTop[4] = float32(rolldata.GetUrRollGrooveStiffnessTop4())
ur.UrDRollGrooveStiffnessTop[5] = float32(rolldata.GetUrRollGrooveStiffnessTop5())
ur.UrDRollGrooveStiffnessTop[6] = float32(rolldata.GetUrRollGrooveStiffnessTop6())
ur.UrDRollGrooveStiffnessTop[7] = float32(rolldata.GetUrRollGrooveStiffnessTop7())
ur.UrDRollGrooveStiffnessTop[8] = float32(rolldata.GetUrRollGrooveStiffnessTop8())
ur.UrDRollGrooveStiffnessTop[9] = float32(rolldata.GetUrRollGrooveStiffnessTop9())
ur.UrDRollGrooveStiffnessBot[0] = float32(rolldata.GetUrRollGrooveStiffnessBot0())
ur.UrDRollGrooveStiffnessBot[1] = float32(rolldata.GetUrRollGrooveStiffnessBot1())
ur.UrDRollGrooveStiffnessBot[2] = float32(rolldata.GetUrRollGrooveStiffnessBot2())
ur.UrDRollGrooveStiffnessBot[3] = float32(rolldata.GetUrRollGrooveStiffnessBot3())
ur.UrDRollGrooveStiffnessBot[4] = float32(rolldata.GetUrRollGrooveStiffnessBot4())
ur.UrDRollGrooveStiffnessBot[5] = float32(rolldata.GetUrRollGrooveStiffnessBot5())
ur.UrDRollGrooveStiffnessBot[6] = float32(rolldata.GetUrRollGrooveStiffnessBot6())
ur.UrDRollGrooveStiffnessBot[7] = float32(rolldata.GetUrRollGrooveStiffnessBot7())
ur.UrDRollGrooveStiffnessBot[8] = float32(rolldata.GetUrRollGrooveStiffnessBot8())
ur.UrDRollGrooveStiffnessBot[9] = float32(rolldata.GetUrRollGrooveStiffnessBot9())
ur.UrDRollGroovePos[0] = float32(rolldata.GetUrRollGroovePos0())
ur.UrDRollGroovePos[1] = float32(rolldata.GetUrRollGroovePos1())
ur.UrDRollGroovePos[2] = float32(rolldata.GetUrRollGroovePos2())
ur.UrDRollGroovePos[3] = float32(rolldata.GetUrRollGroovePos3())
ur.UrDRollGroovePos[4] = float32(rolldata.GetUrRollGroovePos4())
ur.UrDRollGroovePos[5] = float32(rolldata.GetUrRollGroovePos5())
ur.UrDRollGroovePos[6] = float32(rolldata.GetUrRollGroovePos6())
ur.UrDRollGroovePos[7] = float32(rolldata.GetUrRollGroovePos7())
ur.UrDRollGroovePos[8] = float32(rolldata.GetUrRollGroovePos8())
ur.UrDRollGroovePos[9] = float32(rolldata.GetUrRollGroovePos9())
ur.UrDRollGrooveSharp[0] = int32(rolldata.GetUrRollGrooveSharp0())
ur.UrDRollGrooveSharp[1] = int32(rolldata.GetUrRollGrooveSharp1())
ur.UrDRollGrooveSharp[2] = int32(rolldata.GetUrRollGrooveSharp2())
ur.UrDRollGrooveSharp[3] = int32(rolldata.GetUrRollGrooveSharp3())
ur.UrDRollGrooveSharp[4] = int32(rolldata.GetUrRollGrooveSharp4())
ur.UrDRollGrooveSharp[5] = int32(rolldata.GetUrRollGrooveSharp5())
ur.UrDRollGrooveSharp[6] = int32(rolldata.GetUrRollGrooveSharp6())
ur.UrDRollGrooveSharp[7] = int32(rolldata.GetUrRollGrooveSharp7())
ur.UrDRollGrooveSharp[8] = int32(rolldata.GetUrRollGrooveSharp8())
ur.UrDRollGrooveSharp[9] = int32(rolldata.GetUrRollGrooveSharp9())
ur.UrDRollActualShimpsTop = float32(rolldata.GetUrActualShimpsHtp())
ur.UrDRollActualShimpsBot = float32(rolldata.GetUrActualShimpsHbo())
ur.UrDRollThrustPlate = float32(rolldata.GetUrRollThrustPlate())
}
func (ur *L2Ur) ToBytes() ([]byte, error) {
bs := make([]byte, unsafe.Sizeof(ur))
buffer := bytes.NewBuffer(bs)
if err := binary.Write(buffer, binary.LittleEndian, ur); err != nil {
return nil, err
}
return buffer.Bytes(), nil
}