182 lines
11 KiB
Go
182 lines
11 KiB
Go
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
|
|
}
|