不用byte打包数据,多此一举,直接移位就行,组输出范围不够扩一下。
IF a_num_test1>=0 THEN
b_num_test1:=0;
c_dnum_test1:=BitLShDnum(NumToDnum(b_num_test1),12);
c_dnum_test1:=BitOrDnum(c_dnum_test1,NumToDnum(a_num_test1));
d_num_test1:=DnumToNum(c_dnum_test1);
SetGO io_gout_num,d_num_test1;
ELSE
b_num_test1:=1;
c_dnum_test1:=BitLShDnum(NumToDnum(b_num_test1),12);
e_num_test1:=Abs(a_num_test1);
c_dnum_test1:=BitOrDnum(c_dnum_test1,NumToDnum(e_num_test1));
d_num_test1:=DnumToNum(c_dnum_test1);
SetGO io_gout_num,d_num_test1;
ENDIF
大概这么个意思,只需要一个信号,不需要分正负两种信号输出。但是相当于做了个编码,得在PLC端解码。