Siemens S7 Programming (single FB in TIA 16)
Budget: $30 โ $250 USD
We are system integrator majoring in developing small and middle scale automation based on Siemens / B&R / Mitsubishi PLCs
You will need to write code for simple PID control of a heaters. If SP (setpoint is greater than PV (present value from temperature sensor) than we should switch on contactors bases on the value of LMN (CONT_C manipulated variable)
The interface is provided in HEAT_CTRL.png
1. Heaters should switch on not simulanaously, but DELAY seconds one after another.
2 You should call well known Siemens library CONT_ะก internally. Its output, LMN is used to decide, how many heaters are due to be on at the monment
3 Small LMN deviations that are less than DEADB should be ignored when deciding to switch on or not
4 You should avoid using IEC or S7 or S5 timers when writing code/ Only subtracting from an Int variable
5 One tank may have several heaters. Available number of heaters is set in N_OF_DEVICES variable (minimum 1 and maximum 16). Still only one teperature sensor is available for one tank (PV value)
6 When MAN_100 (manually switch on all) is true, then all heaters must be switched on. When MAN_0 is set, than all should be off.
7. Use CONTACTOR_LIFETIME_LIM to adjust how many times a single output may be set without taking into account that we should share the buden. For instance, if CONTACTOR_LIFETIME_LIM is set to 10, and SP is near PV, than ARR_DEVICES[4] may be set / reset 10 times, and only after that if still On condition s met, we set ARR_DEVICES[5]
When Error is smalland SP is say 1 degree more then PV, , LMN is small as well. then we should switch on only One Heater. This will be the case most of the time when PID loop works. But this would mean that the same contacor is always switching. To save life of each electromechanical contactor we must check, how many times it has switched. If > CONTACTOR_LIFETIME_LIM, then another contactor should act etc.
6 If we for example have all 16 contacor and LMN is 25 % then all 4 conactors should be ON
7. When Error (SP-PV) is greater than SP_TOLERANCE that an alarm should be generated and Q_FAULTY bit should be set. It should be automatically reset when Error is again < than SP_TOLERANCE
9 When Error/SP > 10% then all heaters must be switched ON (this is for fast reaching the desired temperature after production line was idle. Of course this could also be achived when we set kP (GAIN) to high value and reduce integration time, but I prefer not to do it because we thus will have strong oscillations.
IF we would leave all at PID discrepancy from the very beggining, we would have to wait a long time after switch on the line untill LMN reaches 100% and all heaters would be switched on
Of course your code must be checked and tested carefullly in PLCSIM by changing the PV and SP values so that you see wich bits are set to ON to be sure that this algorythm is working correctly
Your code should be concise, with comments on any significant idea and written in ONE IEC language
You will need to write code for simple PID control of a heaters. If SP (setpoint is greater than PV (present value from temperature sensor) than we should switch on contactors bases on the value of LMN (CONT_C manipulated variable)
The interface is provided in HEAT_CTRL.png
1. Heaters should switch on not simulanaously, but DELAY seconds one after another.
2 You should call well known Siemens library CONT_ะก internally. Its output, LMN is used to decide, how many heaters are due to be on at the monment
3 Small LMN deviations that are less than DEADB should be ignored when deciding to switch on or not
4 You should avoid using IEC or S7 or S5 timers when writing code/ Only subtracting from an Int variable
5 One tank may have several heaters. Available number of heaters is set in N_OF_DEVICES variable (minimum 1 and maximum 16). Still only one teperature sensor is available for one tank (PV value)
6 When MAN_100 (manually switch on all) is true, then all heaters must be switched on. When MAN_0 is set, than all should be off.
7. Use CONTACTOR_LIFETIME_LIM to adjust how many times a single output may be set without taking into account that we should share the buden. For instance, if CONTACTOR_LIFETIME_LIM is set to 10, and SP is near PV, than ARR_DEVICES[4] may be set / reset 10 times, and only after that if still On condition s met, we set ARR_DEVICES[5]
When Error is smalland SP is say 1 degree more then PV, , LMN is small as well. then we should switch on only One Heater. This will be the case most of the time when PID loop works. But this would mean that the same contacor is always switching. To save life of each electromechanical contactor we must check, how many times it has switched. If > CONTACTOR_LIFETIME_LIM, then another contactor should act etc.
6 If we for example have all 16 contacor and LMN is 25 % then all 4 conactors should be ON
7. When Error (SP-PV) is greater than SP_TOLERANCE that an alarm should be generated and Q_FAULTY bit should be set. It should be automatically reset when Error is again < than SP_TOLERANCE
9 When Error/SP > 10% then all heaters must be switched ON (this is for fast reaching the desired temperature after production line was idle. Of course this could also be achived when we set kP (GAIN) to high value and reduce integration time, but I prefer not to do it because we thus will have strong oscillations.
IF we would leave all at PID discrepancy from the very beggining, we would have to wait a long time after switch on the line untill LMN reaches 100% and all heaters would be switched on
Of course your code must be checked and tested carefullly in PLCSIM by changing the PV and SP values so that you see wich bits are set to ON to be sure that this algorythm is working correctly
Your code should be concise, with comments on any significant idea and written in ONE IEC language
Related categories:
PLC & SCADA