用c语言编写程序实现串口和西门子s7200plc的通信
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言编写程序实现串口和西门子s7200plc的通信相关的知识,希望对你有一定的参考价值。
参考技术A 这个真不是一句话可以说的清楚的首先要在PC上实现串口通信用485的口
其次要在200上进行相应的自由口通信编写
不懂的继续! 参考技术B 单片机吧
proteus 论坛有很多实例
pid控制的C语言编程
请专业人士编写一个pid控制的c语言程序,*****请在每条语句后注明详细的解释*****,最好不要在百度上搜一段回复,希望有强人亲自编写一段,感激不尽!
参考技术A #include<unistd.h>#include<stdio.h>
int main(int argc,int **argv)
int pid=fork();
if(pid==-1)
printf("error");
else if(pid==0)
printf("This is the child process!\n");
else
printf("This is the parent process! child process id=%d\n",pid);
return 0;
首先为什么这段代码gcc编译不了,只能用g++编译,gcc编译显示结果如下
Undefined first referenced
symbol in file
__gxx_personality_v0 /var/tmp//ccuHN8IS.o
ld: fatal: Symbol referencing errors. No output written to t5
collect2: ld returned 1 exit status
其次,g++编译后运行结果如下
This is the parent process! child process id=27406
This is the child process!本回答被提问者采纳 参考技术B #include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar timecount ,PWMH,SpeedSet,SpeedDet;
uchar KP,KI,KD;
int e1,e2,e3,uk,duk;
sbit Dir = P1^0;
sbit PWM = P1^1;
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
void delay(uchar i)
uchar j;
for(;i > 0; i--)
for(j=29;j > 0;j--)
_nop_();
_nop_();
void PWMout (uchar q)
PWM = 1;
delay(q);
PWM = 0;
delay(100-q);
void timer1() interrupt 3
TH1 = 0x3c;
TL1 = 0xb0;
if(--timecount == 0)
timecount = 4;
TR0 = 0;
SpeedDet = TL0;
TL0 = 0;
TR0 = 1;
e1 = SpeedSet - SpeedDet;
duk = (KP*(e1-e2)+KI*e1+KD*(e1-2*e2+e3))/10;
uk = uk+duk;
if(uk>100) uk = 100;
else if(uk< -100) uk = -100;
if(uk < 0)
PWMH = -uk;
Dir = 0;
else
PWMH = uk;
Dir = 1;
e3 = e2;
e2 = e1;
void main()
TMOD = 0x16;
TH0 = 0;
TL0 = 0;
TH1 = 0x3c;
TL1 = 0xb0;
timecount = 4;
PWMH = 0;
SpeedSet = 80; //设定转速为2000rpm
SpeedDet = 0;
e1 = 0; //对应为PID控制中的
//e(k),e(k-1),e(k-2)
e2 = 0;
e3 = 0;
KP = 10; //对应为PID控制中的
// Kp,K1,Kd
KI = 1;
KD = 2;
TR0 = 1;
TR1 = 1;
ET1 = 1;
EA = 1;
while(1)
PWMout(PWMH);
以上是关于用c语言编写程序实现串口和西门子s7200plc的通信的主要内容,如果未能解决你的问题,请参考以下文章