plc通信程序 c语言,三菱PLC编程口通信C语言源代码(3)

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

{ for(i=j*4+1;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

{

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

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

break;

}

if(lTmp>=DELAY_TIMES)

{

/*enable();*/

return(FALSE);

}

outportb(DATA_PORT,uSend[i]);

}

disable();

for(lTmp=0L;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];

西门子PLC例程PLC控制器源码资料770个合集: PID温度控制.rar PID算法演示程序.rar pid编程实例.zip PLC S5精彩实例.rar PLC S7-200程序实例--程控喷泉程序.rar PLC-PLC之间通讯实例(双联电梯程序)1.rar PLC-PLC之间通讯实例(双联电梯程序)2.rar plc200例子.rar PLCPLC 之间的ProfiBus 通讯.rar PLCPLC之间的ProfiBus通讯.rar PLCPLC 之间的MPI通讯.rar PLC与气压控制.rar PLC参数自调整模糊控制定位系统研究.rar PLC发电机励磁控制程序.rar PLC可程式控制器模擬.rar PLC可程式控制器模擬教.rar PLC可程式控制器模擬教學課程.rar PLC应用系统设计及实例.zip Profibus communication for Danfoss drive using SFC14 & 15.pdf PROFIBUS_ET200通讯实例1.zip PROFIBUS_ET200通讯实例2.zip PROFIBUS通讯事例1.zip PROFIBUS通讯事例2.zip PROFIBUS通讯事例3.zip PROFIBUS通讯事例4.zip Reliance GV3000 control block using S7.zip Remanent On-delayTimer for S7-300400.zip Reusable code with FBs..rar S200配料程序.rar s5_s7 profibus 主从通讯组态.rar s7 200例子程序.rar s7 200做的转盘的程序,6个工位.rar S7 Array and Indirect Addressing Examples and Basics.zip s7-200 modbus主、从站例子程序.rar S7-200 modbus主从站标准例程.rar S7-200 Modbus主站通讯程序.rar S7-200 Modbus从站通讯测试.rar S7-200 PID控制例程1.rar S7-200 PID控制例程2.rar S7-200 PID控制例程3.rar S7-200 PWM控制实例.rar S7-200 变频控制例程.zip S7-200 恒压供水,一拖三实例.rar s7-200 称重程序.rar S7-200 自由通讯测试程序A.rar S7-200 自由通讯程序 方式B.rar S7-200 自由通讯程序 方式C.rar s7-200 高速计数及pid控制之恒速控制.rar S7-200PLC控制恒压变频供水的PLC程序.rar S7-200PLC程序结构.rar S7-200_315-DP与EM277的PROFIBUS通讯.rar S7-200_315-DP与EM277的PROFIBUS通讯.zip S7-200_50例程.rar S7-200_与S7300之间的MPI通讯(1).zip S7-200_与S7300之间的MPI通讯.zip S7-200_与S7300的以太网通讯(1).zip S7-200_与S7300的以太网通讯.zip S7-200_之间通讯和链接.rar S7-200_时间设定与读取.rar S7-200下的布袋除尘器控制程序.rar S7-200与6RA70之间的USS通讯.zip S7-200与ABB550变频器通讯实例.rar S7-200与DDM4A数显表通信1.rar S7-200与DDM4A数显表通信2.rar S7-200与MM440通过USS协议通讯例子.rar S7-200与PC之间的连接:从WINDOWS应用程序中读数据.rar S7-200与S7-300通信实例及步骤.rar S7-200与三垦变频器通信实例1.rar S7-200与三垦变频器通信实例2.rar S7-200与三垦变频器通信实例3.rar S7-200与富士PXR仪表自由通讯协议通信.rar S7-200与易能EDS1000变频器的通讯.rar s7-200之多种方法实现单按钮电路.rar S7-200之间数据通讯.rar S7-200使用EM253控制伺服的PLC程序.rar S7-200供水(两台循环)实例.rar s7-200做Modbus RTU.rar s7-200做modbus主站与杰曼仪表通讯程序.rar S7-200利用MODBUS主站库与LG变频的通讯程序.rar S7-200和变频器自由通信.zip S7-200处理定时中断.zip s7-200实例.rar S7-200实验用程序(1).rar S7-200实验用程序.rar S7-200工程.rar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值