电工知识|三菱PLC编程口通信C语言源代码

   更新日期:2017-04-02     来源:建材之家    作者:水电之家    浏览:56    评论:0    
核心提示:fxnew.h#define DELAY_TIMES 30000L #define TRUE 1#define FALSE 0 #define TRUE 1#define FALSE 0 #define FORCE_ON 0x37#define FORCE_OFF 0x38 void init_plc(void);int check_plc(void);int _read_data_registe

电线接法_电线的接法_电线接头接法图解

推荐简介:电工这种技术是很简单的,我要拿出来说一说就有点小题大作了, 我还是看了昨天的电视上说有个国家的标致的建筑300米高,警方初步认为是电线短路或电线打火造成的 我对这方面了解的,线路如何会打火,为什么会短路,以及他的标准做法给大家说一下,如果同行有认为 不妥之处敬请指正。我在这做几个图请大家看一下。 顶上是二级吊顶,我就以他为例,说一下顶内的电线做法 提醒大家一下确每一根电线都......
水电之家讯:fxnew.h

#define DELAY_TIMES 30000L

#define TRUE 1

#define FALSE 0

#define TRUE 1

#define FALSE 0

#define FORCE_ON 0x37

#define FORCE_OFF 0x38

void init_plc(void);

int check_plc(void);

int _read_data_register(unsigned int uAddress,unsigned int number);

int _read_mdata_register(unsigned int uAddress,unsigned int number);

int _write_data_register(unsigned int uAddress,unsigned int number);

int _force_m_contact(unsigned int uAddress,unsigned char ucOn_off);

int read_data_register(unsigned int uAddress,unsigned int number);

int read_mdata_register(unsigned int uAddress,unsigned int number);

int write_data_register(unsigned int uAddress,unsigned int number);

int force_m_contact(unsigned int uAddress,unsigned char ucOn_off);

int _read_m_register(unsigned int uAddress,unsigned int number);

int read_m_register(unsigned int uAddress,unsigned int number);

int TESTING=0;

unsigned int uRead_value[25];

unsigned int uWrite_value[25];

unsigned int COMM_PORT=1;

unsigned int STATS_PORT=0x2fd;

unsigned int DATA_PORT=0x2f8;

void init_plc(void)

{ _AX=0xfa;

_DX=COMM_PORT;

geninterrupt(0x14);

while((inportb(STATS_PORT)&1)!=0)inportb(DATA_PORT);



}

int check_plc(void)

{ long lTmp;

if(TESTING==1)return TRUE;

init_plc();

for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&0x20)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

return(FALSE);

outportb(DATA_PORT,5);

disable();

for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{enable();

return(FALSE);

}

if((lTmp=inportb(DATA_PORT))==6)

{ enable();

return(TRUE);

}

else

{ enable();

return(FALSE);

}

}

int read_data_register(unsigned int uAddress,unsigned int number)

{int i;

for(i=0;i<3;i++)

if(_read_data_register(uAddress,number)==TRUE)

return TRUE;

return FALSE;

}

int _read_data_register(unsigned int uAddress,unsigned int number)

{ unsigned char uSend[]={2,0x30,0x30,0x30,0x30,0x30,0x30,0x32,3,0x30,0x30};

unsigned char uReceive[104];

unsigned int uTmp;

unsigned int uSum;

unsigned int num;

long lTmp;

int i,j;

if(TESTING==1)

{ for(i=0;i<number;i++)uRead_value[i]=0;

return TRUE;

}

init_plc();

num=number*2;

if((num/16)>=10)

uSend[6]=(unsigned char)(num/16+0x41-10);

else

uSend[6]=(unsigned char)(num/16+0x30);

if((num%16)>=10)

uSend[7]=(unsigned char)((num%16)+0x41-10);

else

uSend[7]=(unsigned char)((num%16)+0x30);

uAddress=uAddress*2+0x1000;

uTmp=uAddress & 0x000f;

uSend[5]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>4) & 0x000f;

uSend[4]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>8) & 0x000f;

uSend[3]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>12)&0x000f;

uSend[2]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uSum=0;

for(i=1;i<9;i++)

uSum=uSum+(unsigned char)uSend[i];

uTmp=uSum&0x000f;

uSend[10]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uSum>>4)&0x000f;

uSend[9]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



for(i=0;i<11;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&0x20)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{



return(FALSE);

}

outportb(DATA_PORT,uSend[i]);

}

disable();



for(lTmp=0;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

uReceive[0]=inportb(DATA_PORT);

if(uReceive[0]!=2)

{

enable();

return(FALSE);

}

for(i=1;i<number*4+4;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

uReceive[i]=inportb(DATA_PORT);

}

enable();

uSum=0;

for(i=1;i<number*4+2;i++)

uSum=uSum+(unsigned int)uReceive[i];

uTmp=uSum&0xf;

uTmp=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



if((unsigned char)uTmp!=uReceive[number*4+3])return(FALSE);

uTmp=(uSum>>4)&0xf;

uTmp=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



if((unsigned char)uTmp!=uReceive[number*4+2])return(FALSE);

for(j=0;j<number;j++)

{for(i=j*4+1;i<j*4+5;i++)

uReceive[i]=(uReceive[i]>0x39)?uReceive[i]-0x41+0xa:uReceive[i]-0x30;

uRead_value[j]=(((((uReceive[j*4+3]<<4)+uReceive[j*4+4])<<4)+uReceive[j*4+1])<<4)+uReceive[j*4+2];

}

return TRUE;

}

int read_mdata_register(unsigned int uAddress,unsigned int number)

{int i;

for(i=0;i<3;i++)

if(_read_mdata_register(uAddress,number)==TRUE)

return TRUE;

return FALSE;

}

int _read_mdata_register(unsigned int uAddress,unsigned int number)

{ unsigned char uSend[]={2,0x30,0x30,0x30,0x30,0x30,0x30,0x32,3,0x30,0x30};

unsigned char uReceive[104];

unsigned int uTmp;

unsigned int uSum;

unsigned int num;

long lTmp;

int i,j;

if(TESTING==1)

{ for(i=0;i<number;i++)uRead_value[i]=0;

return TRUE;

}

init_plc();

num=number*2;

if((num/16)>=10)

uSend[6]=(unsigned char)(num/16+0x41-10);

else

uSend[6]=(unsigned char)(num/16+0x30);

if((num%16)>=10)

uSend[7]=(unsigned char)((num%16)+0x41-10);

else

uSend[7]=(unsigned char)((num%16)+0x30);



uTmp=uAddress & 0x000f;

uSend[5]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>4) & 0x000f;

uSend[4]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>8) & 0x000f;

uSend[3]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>12)&0x000f;

uSend[2]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uSum=0;

for(i=1;i<9;i++)

uSum=uSum+(unsigned char)uSend[i];

uTmp=uSum&0x000f;

uSend[10]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uSum>>4)&0x000f;

uSend[9]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

for(i=0;i<11;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&0x20)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{



return(FALSE);

}

outportb(DATA_PORT,uSend[i]);

}

disable();



for(lTmp=0;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

uReceive[0]=inportb(DATA_PORT);

if(uReceive[0]!=2)

{

enable();

return(FALSE);

}

for(i=1;i<number*4+4;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

uReceive[i]=inportb(DATA_PORT);

}

enable();

uSum=0;

for(i=1;i<number*4+2;i++)

uSum=uSum+(unsigned int)uReceive[i];

uTmp=uSum&0xf;

uTmp=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



if((unsigned char)uTmp!=uReceive[number*4+3])return(FALSE);

uTmp=(uSum>>4)&0xf;

uTmp=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



if((unsigned char)uTmp!=uReceive[number*4+2])return(FALSE);

for(j=0;j<number;j++)

{for(i=j*4+1;i<j*4+5;i++)

uReceive[i]=(uReceive[i]>0x39)?uReceive[i]-0x41+0xa:uReceive[i]-0x30;

uRead_value[j]=(((((uReceive[j*4+3]<<4)+uReceive[j*4+4])<<4)+uReceive[j*4+1])<<4)+uReceive[j*4+2];

}

return TRUE;

}

int write_data_register(unsigned int uAddress,unsigned int number)

{int i;

for(i=0;i<3;i++)

if(_write_data_register(uAddress,number)==TRUE)

return TRUE;

return FALSE;

}

int _write_data_register(unsigned int uAddress,unsigned int number)

{ unsigned char uSend[111];

unsigned int uTmp,uSum,num;

long lTmp;

int i;

if(TESTING==1)return TRUE;



init_plc();

uSend[0]=2;

uSend[1]=0x31;

uSend[number*4+8]=3;

num=(number*2)/16;

if(num>=10)uSend[6]=num+0x41-10;

else uSend[6]=num+0x30;

num=(number*2)%16;

if(num>=10)uSend[7]=num+0x41-10;

else uSend[7]=num+0x30;

uAddress=0x1000+2*uAddress;

uTmp=uAddress&0x000f;

uSend[5]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>4)&0x000f;

uSend[4]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>8)&0x000f;

uSend[3]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>12)&0x000f;

uSend[2]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

for(i=0;i<number;i++)

{

uTmp=uWrite_value[i]&0x000f;

uSend[i*4+9]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uWrite_value[i]>>4)&0x000f;

uSend[i*4+8]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uWrite_value[i]>>8)&0x000f;

uSend[i*4+11]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uWrite_value[i]>>12)&0x000f;

uSend[i*4+10]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

}

uSum=0;

for(i=1;i<9+number*4;i++)

uSum+=uSend[i];

uTmp=uSum&0x000f;

uSend[number*4+10]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uSum>>4)&0x000f;

uSend[number*4+9]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

for(i=0;i<11+number*4;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&0x20)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{



return(FALSE);

}

outportb(DATA_PORT,uSend[i]);

}

disable();

for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

if(inportb(DATA_PORT)!=6)

{

enable();

return(FALSE);

}

else

{

enable();

return(TRUE);

}

}

int force_m_contact(unsigned uAddress,unsigned char ucOn_off)

{int i;

for(i=0;i<3;i++)

if(_force_m_contact(uAddress,ucOn_off)==TRUE)

return TRUE;

return FALSE;

}

int _force_m_contact(unsigned uAddress,unsigned char ucOn_off)

{ unsigned uSend[]={2,0x37,0x30,0x30,0x30,0x30,3,0x30,0x30};

unsigned uTmp,uSum,i;

long lTmp;

if(TESTING==1)return TRUE;

init_plc();

uAddress=uAddress+0x800;

uSend[1]=ucOn_off;

uTmp=uAddress&0x000f;

uSend[3]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>4)&0x000f;

uSend[2]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>8)&0x000f;

uSend[5]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>12)&0x000f;

uSend[4]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uSum=0;

for(i=1;i<7;i++)

uSum+=uSend[i];

uTmp=uSum&0x000f;

uSend[8]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uSum>>4)&0x000f;

uSend[7]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

for(i=0;i<9;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&0x20)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

outportb(DATA_PORT,uSend[i]);

}

disable();

for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

if(inportb(DATA_PORT)!=6)

{

enable();

return(FALSE);

}

else

{ enable();

return(TRUE);

}

}

int read_m_register(unsigned int uAddress,unsigned int number)

{int i;

for(i=0;i<3;i++)

if(_read_m_register(uAddress,number)==TRUE)

return TRUE;

return FALSE;

}

int _read_m_register(unsigned int uAddress,unsigned int number)

{ unsigned char uSend[]={2,0x30,0x30,0x30,0x30,0x30,0x30,0x32,3,0x30,0x30};

unsigned char uReceive[54];

unsigned int uTmp;

unsigned int uSum;

unsigned int num;

long lTmp;

int i,j;

if(TESTING==1)

{ for(i=0;i<number;i++)uRead_value[i]=0;

return TRUE;

}

init_plc();

num=number;

if((num/16)>=10)

uSend[6]=(unsigned char)(num/16+0x41-10);

else

uSend[6]=(unsigned char)(num/16+0x30);

if((num%16)>=10)

uSend[7]=(unsigned char)((num%16)+0x41-10);

else

uSend[7]=(unsigned char)((num%16)+0x30);

uAddress=uAddress/8+0x100;

uTmp=uAddress & 0x000f;

uSend[5]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>4) & 0x000f;

uSend[4]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>8) & 0x000f;

uSend[3]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uAddress>>12)&0x000f;

uSend[2]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uSum=0;

for(i=1;i<9;i++)

uSum=uSum+(unsigned char)uSend[i];

uTmp=uSum&0x000f;

uSend[10]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);

uTmp=(uSum>>4)&0x000f;

uSend[9]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



for(i=0;i<11;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&0x20)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{



return(FALSE);

}

outportb(DATA_PORT,uSend[i]);

}

disable();

for(lTmp=0;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

uReceive[0]=inportb(DATA_PORT);

if(uReceive[0]!=2)

{

enable();

return(FALSE);

}

for(i=1;i<number*2+4;i++)

{ for(lTmp=0L;lTmp<DELAY_TIMES;lTmp++)

{ if((inportb(STATS_PORT)&1)!=0)

break;

}

if(lTmp>=DELAY_TIMES)

{

enable();

return(FALSE);

}

uReceive[i]=inportb(DATA_PORT);

}

enable();

uSum=0;

for(i=1;i<number*2+2;i++)

uSum=uSum+(unsigned int)uReceive[i];

uTmp=uSum&0xf;

uTmp=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



if((unsigned char)uTmp!=uReceive[number*2+3])return(FALSE);

uTmp=(uSum>>4)&0xf;

uTmp=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);



if((unsigned char)uTmp!=uReceive[number*2+2])return(FALSE);

for(j=0;j<number;j++)

{for(i=j*2+1;i<j*2+3;i++)

uReceive[i]=(uReceive[i]>0x39)?uReceive[i]-0x41+0xa:uReceive[i]-0x30;

uRead_value[j]=((uReceive[j*2+1])<<4)+uReceive[j*2+2];

}

return TRUE;

}

水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/
小程序码
 
打赏
 
更多>文章标签:电线
更多>同类水电电工资讯
0相关评论

推荐图文更多...
点击排行更多...
最新视频更多...
推荐产品更多...
老姚之家 | 全景头条 | 照明之家 | 防水之家 | 防盗之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号-1
(c)2015-2017 BYBC.CN SYSTEM All Rights Reserved
Powered by 电工之家