不用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端解碼。