Com信号网关功能主要包括I-PDU接收超时监控、I-PDU回调、UpdateBit更新位的检查、字节序大小端转换及符号扩展。
其中,符号扩展功能主要是针对有符号类型数据进行处理。
如果收到数据的最高比特位的值为1,则表明此次收到的为负数, Com将对其高比特位填充“ 1”,使其数据宽度与对应的类型匹配。
例如类型为Sint8的Signal, ComBitSize为5,接收到的数据为11101b,其最高位为 1,则对其高位补充3个1,扩展为11111101b。
Com标准规范原文示例:
Example: A 10-Bit signed signal is received and copied by Com_ReceiveSignal to a
16-Bit signed integer variable. If (–3)decimal is received, the received 10-Bit signal has
a value of 1111111101b. While copying it to the 16-Bit integer variable the value will
be extended to 1111111111111101b.
解释:
-3 负数由十六进制数补码表示
3:0011
3的反码:1100
3的反码加1:1101
Signal size是10bit:高位填充为1,1111111101
Signal size是16bit:高位填充为1,1111111111111101
此外,Com模块核心代码不能做信号编码值的单位换算等转换,比如原网段接收值0x0,目标网段需要发送0x1,这一过程需要用户在对应信号的Callout函数中自行处理。