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