⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 instruction_define.cpp

📁 开发虚拟的被控对象及虚拟的PLC,模似PLC的工作过程进行实验。用户可根据具体的实验,确定其输入和输出的控制条件,用虚拟的连线和虚拟的PLC连接,用户利用梯形图的编程方式编写PLC程序控制被控对象的动
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		getfirst32address();
		sendto2();
		for(i=0;i<32;i++)
			*(firstaddress+i)=a[i];
	}
}
void instruction70()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		bool a;
		a=*firstaddress;
		*firstaddress=*(firstaddress+15);
		*(firstaddress+15)=a;
	}
}
void instruction71()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst16address();
		getaim16address1();
		sum1=tran16arraytoconst(firstaddress);
		sum2=tran16arraytoconst(aimaddress);
		sum1=sum1+sum2;
		firstaddress=aimaddress;
		tranconstto16array(sum1);
	}
}
void instruction72()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst32address();
		getaim32address1();
		sum1=tran32arraytoconst(firstaddress);
		sum2=tran32arraytoconst(aimaddress);
		sum1=sum1+sum2;
		firstaddress=aimaddress;
		tranconstto32array(sum1);
	}
}
void instruction73()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst16address();
		getaim16address1();
		sum1=tran16arraytoconst(firstaddress);
		sum2=tran16arraytoconst(aimaddress);
		sum1=sum1+sum2;
		getaim16address2();
		firstaddress=aimaddress;
		tranconstto16array(sum1);
	}
}
void instruction74()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst32address();
		getaim32address1();
		sum1=tran32arraytoconst(firstaddress);
		sum2=tran32arraytoconst(aimaddress);
		sum1=sum1+sum2;
		getaim32address2();
		firstaddress=aimaddress;
		tranconstto32array(sum1);
	}
}
void instruction75()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst16address();
		getaim16address1();
		sum1=tran16arraytoconst(firstaddress);
		sum2=tran16arraytoconst(aimaddress);
		sum1=sum1-sum2;
		firstaddress=aimaddress;
		tranconstto16array(sum1);
	}
}
void instruction76()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst32address();
		getaim32address1();
		sum1=tran32arraytoconst(firstaddress);
		sum2=tran32arraytoconst(aimaddress);
		sum1=sum1-sum2;
		firstaddress=aimaddress;
		tranconstto32array(sum1);
	}
}
void instruction77()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst16address();
		getaim16address1();
		sum1=tran16arraytoconst(firstaddress);
		sum2=tran16arraytoconst(aimaddress);
		sum1=sum1-sum2;
		getaim16address2();
		firstaddress=aimaddress;
		tranconstto16array(sum1);
	}
}
void instruction78()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst32address();
		getaim32address1();
		sum1=tran32arraytoconst(firstaddress);
		sum2=tran32arraytoconst(aimaddress);
		sum1=sum1-sum2;
		getaim32address2();
		firstaddress=aimaddress;
		tranconstto32array(sum1);
	}
}
void instruction79()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst16address();
		getaim16address1();
		sum1=tran16arraytoconst(firstaddress);
		sum2=tran16arraytoconst(aimaddress);
		sum1=sum1*sum2;
		getaim16address2();
		firstaddress=aimaddress;
		tranconstto32array(sum1);
	}
}
void tranconstto64array(int k)
{
	if(objectregister[objectsign])
	{
		for(int i=0;i<64;i++)
		{
			*(firstaddress+i)=false;
		}
		for(i=1;i<=k;i++)
		{
			int m=0; 
			while((*(firstaddress+m)!=false)&&(m<64))
				m++;
			*(firstaddress+m)=true;
			for(int n=m;n>=0;n--)
				*(firstaddress+n-1)=false;
		}
	} 
}
void instruction80()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst32address();
		getaim32address1();
		sum1=tran32arraytoconst(firstaddress);
		sum2=tran32arraytoconst(aimaddress);
		sum1=sum1*sum2;
		getaim32address2();
		firstaddress=aimaddress;
		tranconstto64array(sum1);
	}
}
void instruction81()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst16address();
		getaim16address1();
		sum1=tran16arraytoconst(firstaddress);
		sum2=tran16arraytoconst(aimaddress);
		sum1=sum1%sum2;
		getaim16address2();
		firstaddress=aimaddress;
		tranconstto32array(sum1);
	}
}
void instruction82()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst32address();
		getaim32address1();
		sum1=tran32arraytoconst(firstaddress);
		sum2=tran32arraytoconst(aimaddress);
		sum1=sum1*sum2;
		getaim32address2();
		firstaddress=aimaddress;
		tranconstto32array(sum1);
	}
}
void instruction83()
{
	if(objectregister[objectsign])
	{
		int sum;
		getfirst16address();
		sum=tran16arraytoconst(firstaddress);
	    sum+=1;
		tranconstto16array(sum);
	}
}
void instruction84()
{
	if(objectregister[objectsign])
	{
		int sum;
		getfirst32address();
		sum=tran32arraytoconst(firstaddress);
		sum+=1;
		tranconstto32array(sum);
	}
}
void instruction85()
{
	if(objectregister[objectsign])
	{
		int sum;
		getfirst16address();
	    sum=tran16arraytoconst(firstaddress);
	    sum-=1;
	    tranconstto16array(sum);
	}
}
void instruction86()
{
	if(objectregister[objectsign])
	{
		int sum;
	    getfirst32address();
	    sum=tran32arraytoconst(firstaddress);
	    sum-=1;
	    tranconstto32array(sum);
	}
}
void instruction87()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst16address();
	    getaim16address1();
	    sum1=tran16arraytoconst(firstaddress);
	    sum2=tran16arraytoconst(aimaddress);
	    if(sum1==sum2)
		{
			WR[899]=false;
		    WR[900]=true;
		    WR[901]=false;
		}
    	else if(sum1<sum2)
		{
		    WR[899]=true;
		    WR[900]=false;
		    WR[901]=false;
		}
	    else
		{
	    	WR[899]=false;
		    WR[900]=false;
		    WR[901]=true;
		}
	}
}
void instruction88()
{
	if(objectregister[objectsign])
	{
		int sum1,sum2;
		getfirst32address();
	    getaim32address1();
	    sum1=tran32arraytoconst(firstaddress);
	    sum2=tran32arraytoconst(aimaddress);
	    if(sum1==sum2)
		{
			WR[899]=false;
		    WR[900]=true;
		    WR[901]=false;
		}
	    else if(sum1<sum2)
		{
	    	WR[899]=true;
		    WR[900]=false;
		    WR[901]=false;
		}
	    else
		{
		    WR[899]=false;
		    WR[900]=false;
		    WR[901]=true;
		}
	}
}
void instruction89()
{
	if(objectregister[objectsign])
	{
		bool a[16];
	    getfirst16address();
	    getaim16address1();
	    for(int i=0;i<16;i++)
		a[i]=(*(firstaddress+i))&&(*(aimaddress+i));
	    getaim16address2();
	    firstaddress=aimaddress;
	    for(i=0;i<16;i++)
			*(firstaddress+i)=a[i];
	}
}
void instruction90()
{
	if(objectregister[objectsign])
	{
		bool a[16];
		getfirst16address();
	    getaim16address1();
	    for(int i=0;i<16;i++)
			a[i]=(*(firstaddress+i))||(*(aimaddress+i));
	    getaim16address2();
	    firstaddress=aimaddress;
	    for(i=0;i<16;i++)
			*(firstaddress+i)=a[i];
	}
}
void instruction91()
{
	if(objectregister[objectsign])
	{
		bool a[16];
	    getfirst16address();
	    getaim16address1();
	    for(int i=0;i<16;i++)
			a[i]=((*(firstaddress+i))
			&&(!(*(aimaddress+i))))||(!((*(firstaddress+i)))
			&&(*(aimaddress+i)));
    	getaim16address2();
	    firstaddress=aimaddress;
	    for(i=0;i<16;i++)
			*(firstaddress+i)=a[i];
	}
}
void instruction92()
{
	if(objectregister[objectsign])
	{
		bool a[16];
		getfirst16address();
	    getaim16address1();
	    for(int i=0;i<16;i++)
			a[i]=!(((*(firstaddress+i))&&(!(*(aimaddress+i))))||   
			(!((*(firstaddress+i)))&&(*(aimaddress+i))));
	    getaim16address2();
	    firstaddress=aimaddress;
	    for(i=0;i<16;i++)
			*(firstaddress+i)=a[i];
	}
}
void instruction94()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
	    for(int i=1;i<=instructionstore[isrunsign].register2number;i++)
		{
			for(int j=0;j<15;j++)
		    	*(firstaddress+j)=*(firstaddress+j+1);
		    *(firstaddress+16-i)=false;
		}
	}
}
void instruction95()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
	    for(int i=1;i<=instructionstore[isrunsign].register2number;i++)
		{
			for(int j=15;j>0;j--)
				*(firstaddress+j)=*(firstaddress+j-1);
		    *(firstaddress+i-1)=false;
		}
	}
}
void instruction96()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
	    for(int i=1;i<=4;i++)
		{
			for(int j=15;j>0;j--)
				*(firstaddress+j)=*(firstaddress+j-1);
			*(firstaddress+i-1)=false;
		}
	}
}
void instruction97()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
	    for(int i=1;i<=4;i++)
		{
			for(int j=15;j>0;j--)
				*(firstaddress+j)=*(firstaddress+j-1);
			*(firstaddress+i-1)=false;
		}
	}
}
void instruction98()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		for(int i=0;i<instructionstore[isrunsign].register2number
		-instructionstore[isrunsign].register1number;i++)
		{
			firstaddress=firstaddress+i*16;
		    for(int j=0;j<16;j++)
				*(firstaddress+j)=*(firstaddress+16);
		}
		for(i=0;i<16;i++)
			*(firstaddress+i)=*(firstaddress+i+16);
	}
}
void instruction99()
{
	if(objectregister[objectsign])
	{
		getaim16address1();
		for(int i=0;i<instructionstore[isrunsign].register2number
		-instructionstore[isrunsign].register1number;i++)
		{
			aimaddress=aimaddress-i*16;
			for(int j=0;j<16;j++)
				*(aimaddress+j)=*(aimaddress-16);
		}
		for(i=0;i<16;i++)
			*(aimaddress+i)=*(aimaddress+i-16);
	}
}
void instruction100()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		for(int i=0;i<4;i++)
		{
			for(int j=0;j<(instructionstore[isrunsign].register2number
		    -instructionstore[isrunsign].register1number)*16;j++)
			*(firstaddress+j)=*(firstaddress+j+1);
		    *(firstaddress+j-i)=false;
	}
	}
}
void instruction101()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		for(int i=0;i<4;i++)
		{
			for(int j=(instructionstore[isrunsign].register2number
		    -instructionstore[isrunsign].register1number)*16;j>0;j--)
			*(firstaddress+j)=*(firstaddress+j-1);
		    *(firstaddress+i)=false;
		}
	}
}
void instruction102()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		bool a;
		for(int i=1;i<=instructionstore[isrunsign].register2number;i++)
		{
			a=*firstaddress;
			for(int j=0;j<15;j++)
				*(firstaddress+j)=*(firstaddress+j+1);
			*(firstaddress+15)=a;
		}
	}
}
void instruction103()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		bool a;
		for(int i=1;i<=instructionstore[isrunsign].register2number;i++)
		{
			a=*(firstaddress+15);
			for(int j=15;j>0;j--)
				*(firstaddress+j)=*(firstaddress+j-1);
		    *firstaddress=a;
		}
	}
}
void instruction106()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		*(firstaddress+instructionstore[isrunsign].register2number)=true;
	}
}
void instruction107()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		*(firstaddress+instructionstore[isrunsign].register2number)=false;
	}
}  
void instruction108()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		*(firstaddress+instructionstore[isrunsign].register2number)
		=!(*(firstaddress+instructionstore[isrunsign].register2number));
	}
}
void instruction109()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		WR[905]=*(firstaddress+instructionstore[isrunsign].register2number);
	}
}
void instruction110()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		int a;
		for(int i=0;i<16;i++)
		{
			if(*(firstaddress+i)=true)
				a++;
		}
		getaim16address1();
		firstaddress=aimaddress;
		tranconstto16array(a);
	}
}
void instruction111()
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		int a;
		for(int i=0;i<16;i++)
		{
			if(*(firstaddress+i)=false)
				a++;
		}
		getaim16address1();
		firstaddress=aimaddress;
		tranconstto16array(a);
	}
}
void instruction112()  //SR指令
{
	getfirst16address();
	if(objectregister[objectsign])
	{
		for(int i=0;i<16;i++)
			*(firstaddress+i)=false;
	}
	else if(objectregister[objectsign==0?2:objectsign-1])
	{
		for(int i=15;i>=1;i--)
				*(firstaddress+i)=*(firstaddress+i-1);
		int os;
		if(objectsign==0)
			os=1;
		else if(objectsign==1)
			os=2;
		else os=0;
		if(objectregister[os])
			*(firstaddress+0)=1;
		else
			*(firstaddress+0)=0;
	}	
}
void instruction113() //LOOP指令
{
	if(objectregister[objectsign])
	{
		getfirst16address();
		int sum=tran16arraytoconst(firstaddress);
       	if (sum!=0)
		sum-=1;
		tranconstto16array(sum);
	}
}
 



















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -